Compare commits

...

752 Commits

Author SHA1 Message Date
Thom Wiggers
8f29dc6269
Fix some unintentional changes 2024-12-04 11:00:34 +01:00
Thom Wiggers
4d03aa4dcd
Update config.yaml template 2024-12-04 10:57:35 +01:00
Thom Wiggers
f28635b155
Update server config sample 2024-12-04 10:54:58 +01:00
Thom Wiggers
91c2ae2a8c
Update to 3.0.1 2024-12-04 10:52:23 +01:00
Thom Wiggers
f34952d147
Update matrix-appservice-irc version 2024-12-04 10:52:23 +01:00
Slavi Pantaleev
57c5953445
Merge pull request #3851 from spantaleev/renovate/joseluisq-static-web-server-2.x
Update joseluisq/static-web-server Docker tag to v2.34.0
2024-12-04 09:24:16 +02:00
renovate[bot]
05ba03f9af
Update joseluisq/static-web-server Docker tag to v2.34.0 2024-12-04 01:55:57 +00:00
Aine
0e5d0aec65
Synapse Admin v0.10.3-etke33 2024-12-04 00:19:24 +02:00
Aine
b037cb6164
fix postgres backup for postgres v17 2024-12-03 20:03:28 +02:00
Aine
bf123e7ad5
synapse v1.120.2 2024-12-03 18:38:17 +02:00
Slavi Pantaleev
b266ed4200
Merge pull request #3850 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.87
2024-12-03 16:05:54 +02:00
renovate[bot]
819ca21954
Update vectorim/element-web Docker tag to v1.11.87 2024-12-03 14:02:54 +00:00
Slavi Pantaleev
2c719b2ef7 Update beeper-linkedin configuration to latest upstream config and properly pass double-puppeting login shared secrets
We used to pass the shared secret for double-puppeting via a
`login_shared_secret` parameter, which doesn't seem to exist anymore.
The proper way to do it is via `login_shared_secret_map`.

The comments for `login_shared_secret_map` seem to indicate that it's
only usable with the shared-secret-auth password provider.

However, this bridge is based on mautrix-python (`>=0.20.5,<0.21`) as
per its `requirements.txt`
Support for double-puppeting via arbitrary access tokens landed in
mautrix-python 0.20.1 (6f25b62e80/CHANGELOG.md (L44-L53)),
so it should be possible to use appservice double-puppet.
Related to af04ca1238

A bunch of other parameters seem to have moved around as well.

This patch introduces some new Ansible variables for controlling
additional settings related to encryption, etc.
2024-12-02 20:00:08 +02:00
Slavi Pantaleev
e5a2935d0f Move configuration-creation tasks for beeper-linkedin before container-related tasks 2024-12-02 19:38:02 +02:00
Slavi Pantaleev
4d8b226c38 Minor refactoring around matrix_synapse_presence_enabled passing 2024-12-02 19:37:08 +02:00
Slavi Pantaleev
34d1586f25 Actually make use of the matrix_mautrix_discord_bridge_double_puppet_server_map variable 2024-12-02 19:26:08 +02:00
Slavi Pantaleev
8892c81d6b
Merge pull request #3848 from luixxiul/fix
Add details about the difference between install-all and setup-all in speed
2024-12-02 16:06:50 +02:00
Suguru Hirahara
e8548e0016
Mention how much "just install-all" is faster than "just setup-all"
This way, the "installing" sections would cover from beginners to advanced (professional) readers.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-02 20:00:58 +09:00
Suguru Hirahara
a07130e46c
Edit docs/maintenance-upgrading-services.md: add details about the difference between install-all and setup-all in speed
Also: remove the redundant description about that difference from description about the "just" shortcuts.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-02 19:58:24 +09:00
Suguru Hirahara
78bb07877c Update CHANGELOG.md: remove a redundant asterisk
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-02 11:58:39 +02:00
Slavi Pantaleev
8c4711ffa9
Merge pull request #3845 from luixxiul/fix
Adjust blank lines
2024-12-02 10:23:14 +02:00
Suguru Hirahara
bd6db65731
Adjust blank lines: *.md files outside of docs/ directory
Double blank lines are preserved for the first level headings on CHANGELOG.md.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-02 13:58:28 +09:00
Aine
dd31bf0a0a
synapse-admin: remove deprecated vars, introduce matrix_synapse_admin_configuration_extension_json_auto 2024-12-02 01:23:29 +02:00
Suguru Hirahara
a31400ed4a
Adjust blank lines: add ones
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-02 03:14:48 +09:00
Suguru Hirahara
dd5881f2b8
Adjust blank lines: remove duplicated ones
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-02 03:14:39 +09:00
Suguru Hirahara
bc1849d7ff
Edit installing instructions (#3844)
* Replace "just run-tags install-all/setup-all,start" with "just install-all/setup-all"

Thanks to the tip by Slavi that the overhead of ensure-matrix-users-created is negligible.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit installing instructions

- Move the anchor links to docs/just.md
- Add note about running "ensure-matrix-users-created" tags, if ansible-playbook's tags not "setup-all,ensure-matrix-users-created,start", ie. either "setup-all,start", "setup-email2matrix,start", "setup-aux-files,setup-corporal,start", or "setup-matrix-user-verification-service,start"

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update descriptions about installation

- Introduce the most conservative and stable raw ansible-playbook command.
- Introduce the just commands on installing.md and maintenance-upgrading-services.md, not on quick-start.md, since it is too early for quick start guide readers who are just starting to climb learning curve to use the shortcuts.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-etherpad.md: remove the note about ensure-matrix-users-created

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-01 17:04:54 +02:00
Suguru Hirahara
c385b79498 Update docs/configuring-playbook-client-schildichat-web.md: remove warning notification about lagging versions
As the SchildiChat Web docker image was updated with 14a3a01f43226487262d2e4c5d0a939ee93790be thanks to Aine, the warning is no longer relevant. Note that though the package name says it is a test, it is a test release for SchildiChat Web, and the codebase is Element Web v1.11.86.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-01 15:00:34 +02:00
Suguru Hirahara
20c2aade3e
Edit descriptions about installation of components (#3842)
* Replace installation command shortcut for the "just" program with the most conservative raw ansible-playbook command

This commit replaces installation command shortcut ("recipe") for the "just" program with the raw ansible-playbook command, so that the shortcut will be added to it later. The command is so conservative that failure of the command will mean something is clearly broken.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add comments about using setup-all instead of install-all

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add description about shortcut command with the "just" program to the ansible-playbook command with "setup-all" and "start" tags

It also explains difference between "just install-all" and "just setup-all" recipes. The explanation is based on docs/playbook-tags.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update raw ansible-playbook command to have it do what "just install-all" or "just setup-all" does

Since "just install-all" or "just setup-all" invokes "ensure-matrix-users-created" as well, it needs adding to the raw ansible-playbook command.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Remove "ensure-matrix-users-created" from the raw ansible-playbook command which does not need it

Also: update the "just" recipes accordingly. "just install-all" and "just setup-all" run "ensure-matrix-users-created" tag as well, therefore they need to be replaced with "run-tags" recipes to skip "ensure-matrix-users-created"

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-etherpad.md: add ensure-matrix-users-created to the raw ansible-playbook

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add description about "ensure-matrix-users-created" and create a list with description about shortcut commands with "just"

This commit also fixes list item capitalization and punctuation.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add notes bullet lists

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-matrix-corporal.md and docs/configuring-playbook-email2matrix.md: adopt common instructions

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Replace "run the installation command" with "run the playbook with tags"

Now that shortcut commands for the "just" program are displayed along with the existing "installation command", this commit replaces "run the installation command" with "run the playbook with tags" in order to prevent misunderstanding and confusion.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add notes about changing passwords of users specified on vars.yml

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-synapse-admin.md: add the playbook command and just recipes

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Remove redundant blank lines

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-alertmanager-receiver.md: remove the direction to proceed to Usage

Such a kind of direction is not used on other documentation, so it should be fine to just remove it.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/importing-synapse-media-store.md: code block for ansible-playbook

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-12-01 09:42:30 +02:00
Aine
14a3a01f43
SchildiChat Web v1.11.86-sc.0.test.0 2024-11-30 12:41:31 +02:00
Suguru Hirahara
45352e76ce
Apply the common documentation style (#3840)
* Update docs/configuring-playbook-bridge-appservice-webhooks.md: apply the common documentation style

Since the bridge has been deprecated, this change is simply intended to improve styling and format of the article in case it will be used as a template of another bridge in a future.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-bridge-appservice-discord.md: apply the common documentation style

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-bridge-appservice-slack.md: apply the common documentation style

Also: move instruction to create Classic Slack application up as prerequisite

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-bridge-appservice-slack.md: emphasize the unavailability without a classic Slack application

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-29 17:52:28 +02:00
Slavi Pantaleev
119e78bc11 Upgrade Hookshot (5.4.1 -> 6.0.1) 2024-11-29 17:51:11 +02:00
Suguru Hirahara
daf9418610 Replace "Note" with "Warning" considering the significance
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-29 12:24:29 +02:00
Suguru Hirahara
543f2a5c76
Update documentation of setting up double puppeting with bridges (#3837)
* Update docs/configuring-playbook-bridge-appservice-kakaotalk.md: fix the header for adjusting the playbook configuration

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Move sections "Set up Double Puppeting" under "Usage" as subsections for mautrix bridges and appservice kakaotalk

The changes in this commit reflect double puppeting configuration flow. Since the docs claim that double puppeting can be set up after enabling bridges by chatting with the bridge's bot, the explanation about double puppeting may well be placed under "Usage" as subsection.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Remove notes about setting up double puppeting manually

Since this method is explained after configuring bridges, those notes are no longer necessary.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs for mautrix and kakaotalk bridges: add prerequisite(s) section for instructing to install Appservice Double Puppet and/or Shared Secret Auth service

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Replace "Enabling Appservice Double Puppet" with "This"

Enabling Appservice Double Puppet is contrasted with "Enabling double puppeting by enabling the Shared Secret Auth service", therefore it can be just called as "this" if Shared Secret Auth service is not mentioned below.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-bridge-beeper-linkedin.md: follow other instances

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add 💡 (Light Bulb: U+1F4A1) to the headings

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-29 11:15:30 +02:00
Slavi Pantaleev
2296113b69 Upgrade matrix-corporal (3.0.0 -> 3.1.1) 2024-11-29 09:48:35 +02:00
Slavi Pantaleev
62996143a2 Upgrade exim-relay (v4.98-r0-1-1 -> v4.98-r0-2-0) 2024-11-29 09:32:57 +02:00
Slavi Pantaleev
63c1cb33c0 Upgrade Postgres (v17.0-2 -> v17.2-0) 2024-11-29 09:24:50 +02:00
Slavi Pantaleev
8aa9e0048a Update devture/ansible reference (2.17.0-r0-1 -> 2.17.0-r0-2) 2024-11-29 09:08:09 +02:00
Slavi Pantaleev
da08975ca8
Merge pull request #3836 from luixxiul/fix
Update docs/faq.md
2024-11-28 18:01:14 +02:00
Suguru Hirahara
d528ab1822
Update docs/faq.md: mention element-docker-demo project by Element
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-29 00:55:24 +09:00
Suguru Hirahara
313a01320b
Update docs/faq.md: add an entry about MDAD
This is an actual question I asked when I saw "MDAD".

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-29 00:43:42 +09:00
Slavi Pantaleev
a9ceb57b4f
Merge pull request #3835 from luixxiul/fix
Use "alice" as placeholder username instead of "john"
2024-11-28 17:39:02 +02:00
Suguru Hirahara
687627ccd7
Use "alice" as placeholder username instead of "john"
"alice" is normally used in combination with "bob", though.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-28 22:11:47 +09:00
Suguru Hirahara
8a18cc946d
Replace "@user1" with "@alice" and "@user2" with "@bob" (#3833)
* Replace "@user1" with "@alice"

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Replace "@user2" with "@bob"

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-28 13:53:11 +02:00
Slavi Pantaleev
f19f3bea2d Progress a bit on self-building for Schildichat
This is related to https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3831

It:

- adds some missing variables
- version variable to branch variable conversion

While it improves the situation, it still doesn't result in a working
self-building feature, because:

- cloning a repository containing submodules requires special care,
  as described here
  (c03ef20e5d/README.md (initial-build-setup))

- we likely better clone a specific repository version from the very beginning, instead of trying to change subsequently (and having to re-initilize submodules)
  though that's very different than what we're doing elsewhere and is likely very wasteful

- we can't just build a `Dockerfile`, we need to invoke `make setup` (`./setup.sh`)

- it's likely that the `docker-src` directory is not reusable across
  versions or may require special handling to clean up files, etc.
2024-11-28 11:40:31 +02:00
Suguru Hirahara
cd1905f576
Update triple backticks with syntax highlighting (#3832)
* Triple backticks with syntax highlighting: yml → yaml

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Triple backticks with syntax highlighting: yaml and sh

The strings "yml" were replaced with "yaml" as the latter is used more than the former.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Triple backticks with syntax highlighting: INI

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-jitsi.md: remove redundant white space characters after triple backticks

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-28 11:33:56 +02:00
Suguru Hirahara
85b00f298e
Update docs/faq.md (#3829)
* Update docs/faq.md: replace instruction about restoration procedure with the anchor link to installing.md

Note the link to docs/maintenance-migrating.md is placed on the entry just above.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/faq.md: update description related to installation on matrix.example.com

Summary:
- Copy a paragraph from docs/howto-server-delegation.md
- Simplify instruction to install on matrix.example.com by removing repetitive description
- Remove duplicated description about server delegation
- Replace deprecated (or soon to be deprecated) services on configuration example for inventory/host_vars/matrix.example.com/vars.yml

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/faq.md: fix and simplify the answer to the reason why install your server at matrix.example.com

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-28 11:13:24 +02:00
Aine
ed90f680ee
synapse-admin v0.10.3-etke32 2024-11-28 08:22:53 +02:00
Slavi Pantaleev
18dfa6b439
Merge pull request #3828 from spantaleev/renovate/nginx-1.x
Update nginx Docker tag to v1.27.3
2024-11-27 14:23:58 +02:00
Slavi Pantaleev
b395f42948
Merge pull request #3830 from spantaleev/renovate/docker.io-metio-matrix-alertmanager-receiver-2024.x
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.11.27
2024-11-27 09:07:31 +02:00
renovate[bot]
a368af41e3
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.11.27 2024-11-27 06:43:22 +00:00
renovate[bot]
d08f1dcaff
Update nginx Docker tag to v1.27.3 2024-11-27 00:51:10 +00:00
Suguru Hirahara
304c335940
Update docs/faq.md: add links to quick-start.md (#3826)
* Update docs/faq.md: add links to quick-start.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update faq.md

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-26 18:09:31 +02:00
Slavi Pantaleev
c4e81097e3 Upgrade Synapse (v1.119.0 -> v1.120.0) and enable authenticated media by default 2024-11-26 17:02:02 +02:00
Slavi Pantaleev
78d46b0175
Merge pull request #3824 from luixxiul/fix
Remove links to "Quick start" from the breadcrumbs on full installation guide pages
2024-11-26 13:39:48 +02:00
Suguru Hirahara
4a254ec6dd
Remove links to "Quick start" from the breadcrumbs on full installation guide pages
Add a anchor link to quick-start.md on docs/prerequisites.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-26 20:00:13 +09:00
Slavi Pantaleev
1253a5ecdd
Merge pull request #3823 from luixxiul/fix
Update README.md: edit "Getting started" section to introduce two installation guides
2024-11-26 11:44:55 +02:00
Suguru Hirahara
352f2ac24d
Update README.md: edit "Getting started" section to introduce two installation guides
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-26 18:14:30 +09:00
Aine
344c860250
borgmatic v1.9.3 2024-11-26 10:23:27 +02:00
Suguru Hirahara
fb82b46723
Update docs/README.md (#3822)
* Update docs/README.md: add "installation guides" section

Add the emoji to the link to quick-start.md only and not to full installation guide to emphasize the quick start guide

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: move a link to faq.md down

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: add "Maintenance" section

Add a hint to join the support room under "Maintenance" header.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: create the "configuration options" section and add a note

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: sort list items

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: emphasize the anchor link to faq.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: add other anchor links to the "other documentation pages" section

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: add the emoji ℹ️  before the anchor link to faq.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: explanation about FAQ

Remove the hint to check the installation guides as links to them are listed on top of this page.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/README.md: update text of the anchor link to docs/getting-the-playbook.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-25 18:18:11 +02:00
Slavi Pantaleev
bcd6798367
Merge pull request #3819 from luixxiul/fix
Update docs/maintenance-upgrading-services.md: replace the list with sections
2024-11-25 13:57:36 +02:00
Suguru Hirahara
ad3534dd9e
Update docs/maintenance-upgrading-services.md: replace the list with sections
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-25 20:42:02 +09:00
Suguru Hirahara
9ed782fcfd
Update docs/quick-start.md (#3818)
* Edit docs/quick-start.md: add recommended server specs

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/quick-start.md: fix an anchor link

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-25 10:22:20 +02:00
Suguru Hirahara
b940b85914
Edit docs/maintenance-migrating.md (#3816)
* Edit docs/maintenance-migrating.md: replace the numbering list with sections for each item

Also: add an ansible-playbook command with the stop tag as the main command to stop the Matrix services.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/maintenance-migrating.md: move the note under the header

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/maintenance-migrating.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/maintenance-migrating.md: add a section "checking if services work"

The commit does not include the detail as having another similar section increases doubles effort to maintain them and increases possibility of causing discrepancy.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/maintenance-migrating.md: add a note about joining the support room on Matrix

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/maintenance-migrating.md: replace hosts with inventory/hosts

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/maintenance-migrating.md: instruction to run ansible-playbook commands locally

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/maintenance-migrating.md: edit the check section

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/maintenance-migrating.md

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

* Update docs/maintenance-migrating.md: reflect the review and edit a note for creating a temporary account on another server

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Minor rewording in maintenance-migrating.md

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-25 10:03:18 +02:00
Slavi Pantaleev
5317ef61a5
Merge pull request #3817 from luixxiul/close-stale-issues
Update .github/workflows/close-stale-issues.yml: edit stale messages and fix any-of-labels
2024-11-25 07:49:52 +02:00
Suguru Hirahara
204878709a
Update .github/workflows/close-stale-issues.yml: correct the stale message for PRs
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-25 14:01:56 +09:00
Suguru Hirahara
ea7ffa8929
Update .github/workflows/close-stale-issues.yml: edit stale messages and fix any-of-labels
This is a follow-up to 5483925ee4ed40b6d4129e22b714dcf588a97520.

Since any-of-issue/pr-labels overrides any-of-labels, the values specified by the latter need to be specified by the former.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-25 13:18:02 +09:00
Slavi Pantaleev
5483925ee4
Merge pull request #3813 from luixxiul/fix
Update .github/workflows/close-stale-issues.yml: include PRs
2024-11-24 08:35:14 +02:00
Slavi Pantaleev
cb4770abb0
Merge pull request #3814 from spantaleev/renovate/docker-7.x
Update dependency docker to v7.4.3
2024-11-24 08:20:01 +02:00
renovate[bot]
c8affda9db
Update dependency docker to v7.4.3 2024-11-23 20:04:02 +00:00
Suguru Hirahara
ce0036e396
Set operations-per-run to 100
https://github.com/spantaleev/matrix-docker-ansible-deploy/actions/runs/11987582115/job/33421900339?pr=3813 has performed 62 operations, and 100 should be sufficient for a while.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-23 22:42:02 +09:00
Slavi Pantaleev
ca8c1cf2b5 Add support for Valkey and default to using it instead of KeyDB
Hopefully fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3544
2024-11-23 14:43:04 +02:00
Suguru Hirahara
77ef807c54
Update .github/workflows/close-stale-issues.yml: set ignore-pr-updates to true
Without this option, stale counters for each PR keep restarting whenever any update occurs or a comment is added to them. Since the counters for PR are set to 365 days, ignore-pr-updates should help us to get rid of zombie PRs (which are kept open by bumps).

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-23 21:18:57 +09:00
Suguru Hirahara
94f15c451e
Update .github/workflows/close-stale-issues.yml: set exempt-assignees
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-23 21:18:34 +09:00
Suguru Hirahara
b979bfed9e
Update .github/workflows/close-stale-issues.yml: create issues/PRs section
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-23 21:18:15 +09:00
Suguru Hirahara
c1909001a1
Update .github/workflows/close-stale-issues.yml: include PRs
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-23 21:17:42 +09:00
Suguru Hirahara
e36115a5b9
Add docs/just.md (#3811)
* Add docs/just.md as dedicated documentation of "just" commands

This is partially based on fb60ba67f646288b40818a555bb716405e144956 (announcement of adoption of "just" program). It also refers descriptions on installing.md.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Create a table for examples

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Fix entries on the table

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Move the anchor link to "agru"

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/faq.md: add an entry for the just

It is based on the existing explanation of the just on docs/maintenance-upgrading-services.md.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add links to docs/just.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/just.md: add a common note

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Clarify "What is just" section on FAQ

* Update just.md

* Mention install-service

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-23 11:52:48 +02:00
Suguru Hirahara
194a3ca461
Add "Quick start" guide (#3801)
* Add docs/quick-start.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add description about keeping the playbook and services up-to-date

Also: move descriptions about difference between the playbook tags (setup-all and install-all) and about the just "recipe" from installing.md to maintenance-upgrading-services.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Replace <your-username> with YOUR_USERNAME_HERE

This is a common expression and should avoid misunderstanding that `<` and `>` would need to be included

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Replace <your-password> with YOUR_PASSWORD_HERE

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Change the link to 'Quick start' on the breadcrumbs from README.md to quick-start.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add a link to quick-start.md on the "Getting started" section

Since I am not quite sure whether the link to prerequisites.md should be replaced in favor of this link, this commit leaves it as it is for now.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add a link to quick-start.md on docs/README.md

Since I am not quite sure whether the link to prerequisites.md should be replaced in favor of this link, this commit leaves it as it is for now.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add note about using "example.com" as an example domain

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Remove backticks from command examples to register a user

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Apply suggestions from code review

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

* Improve notes for instruction to create a user account

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add details about delegation to installing.md and quick-start.md

Some information is omitted on quick-start.md in favor of installing.md to keep the quick start guide simple.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/quick-start.md: add the breadcrumb header

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/quick-start.md: run the setup command with install-all by default

Refer docs/maintenance-upgrading-services.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Revert "Update docs/quick-start.md: add the breadcrumb header"

This reverts commit 9a6e1cf14c7638953fc8fbb8b487ea0afd0a41ad.

As the quick start guide is standalone.

* Update docs/quick-start.md: add headers inside the install section

These headers should make it perfectly clear that there are two steps to be done to install with the playbook

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update quick-start.md

* Update docs/registering-users.md: notes for manual user registeration

Copy the same notes from quick-start.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Reword some things in quick start

* Add alternative to `just roles`

* Update docs/configuring-dns.md: sync with docs/quick-start.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/quick-start.md: add a link to docs/registering-users.md for an instruction to add user accounts

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/registering-users.md and docs/updating-users-passwords.md: remove "your" from username and password placeholders

These documentations, unlike docs/installing.md and docs/quick-start.md, describe how to handle users (registering them or changing their passwords), some of whom are yours, while others are not.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/installing.md: add "your" to make it clear that it is "your" account that is going to be created

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/installing.md and docs/quick-start.md: mention "make roles"

This commit adds mentions to "make roles" and a note about the preference of ansible-playbook commands over the just "recipes".

quick-start.md intends to be referred by those who have never used the playbook to set up a server, so it is safer to regard that it is not clear to them what exactly the just "recipes" are made of, ie. it takes some time and experience until someone understands simplicity of them. For beginners, I believe that we should prefer the basics over simplicity, from the educational point of view.

If someone feels tired of using the same command repetitively, then the person will have been already well accustomed to the way how the playbook works and how the server is supposed to be maintained, and the person is "qualified" to use the just "recipes", and should be able to use them with confidence, distinguishing the playbook tags from the "recipes", for example, from "just install-all" and "ansible-playbook -i inventory/hosts setup.yml --tags=install-all". Such level of familiarity and experience should not be expected on the quick start guide.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update instructions to update Ansible roles

Also: move the detailed explanation about "just roles" from installing.md to maintenance-upgrading-services.md

TBD: create a dedicated documentation for the "just" program and the concept of its "recipe" (shortcut of commands)

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add a note about cases to create multiple accounts/users

Since one of the quick start guide's goals is to set up an own user account, this commit adds the note about creating multiple accounts/users to installing.md and registering-users.md only. It should be fine as registering-users.md is linked from quick-start.md

Also:
- On installing.md and quick-start.md, change instruction from what encourages to select "admin=yes" or "admin=no" to what encourages to use "admin=yes", since your user account will be the sole user on the server, as long as you set up the server by following the documentation
- Remove the link to registering-users.md from quick-start.md as the documentation is already linked above, under the header of the section
- Sync docs/installing.md with other documentation

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Remove a line about setting "admin=yes" to reduce the amount of information

Because quick-start.md is getting longer with much information, it removes the note in favor of the linked registering-users.md documentation. The note is available on installing.md as well, and details about adding user accounts for other people can (and should) be checked on those documentations.

Also, this commit edits lines above these notes to make it clear that your user account will be an administrator of the server.

With this commit, the amount of the information about adding user accounts will be: registering-users.md > installing.md > quick-start.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Fix a broken anchor link on docs/installing.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Replace repetitive information about upgrading with an anchor link to docs/maintenance-upgrading-services.md

Because details to update/upgrade the Matrix services is not necessary for quick start and the amount of information should be reduced from the viewpoint of maintainability, this commit removes details to update/upgrade from quick-start.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/quick-start.md: add a note about keeping it tidy and simple

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/maintenance-checking-services.md and docs/quick-start.md: add instruction to use federation tester against the base domain

Per Slavi's suggestion.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/installing.md and docs/quick-start.md: replace commands to finalize the installation

Per Slavi's suggestion.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Clarify install-matrix-static-files to avoid confusion with install-all; Minor consistency improvements

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-23 09:59:29 +02:00
Slavi Pantaleev
7b6972aea5
Merge pull request #3810 from luixxiul/fix
Update docs/registering-users.md: fix broken anchor links
2024-11-23 07:21:12 +02:00
Suguru Hirahara
d617f4247c
Update docs/registering-users.md: fix broken anchor links
The anchor link has stopped working with 30c53cdea2055bf2ab6e7727a0a12295d9ba9eab.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-23 13:41:04 +09:00
Slavi Pantaleev
d48890c7a2
Merge pull request #3809 from luixxiul/fix
Replace the warning emoji in text style (U+26A0 FE0E) to emoji style (U+26A0 FE0F)
2024-11-22 21:22:28 +02:00
Suguru Hirahara
e8ae798423
Replace the warning emoji in text style (U+26A0 FE0E) to emoji style (U+26A0 FE0F)
This change makes it possible for terminals to render warning emoji in actual emoji (⚠️), not in text style (⚠).

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-23 01:11:15 +09:00
Slavi Pantaleev
f1712cec73
Merge pull request #3806 from luixxiul/fix
Add .github/workflows/close-stale-issues.yml: close stale issues automatically
2024-11-22 08:29:30 +02:00
Suguru Hirahara
b8ed31527c
Add .github/workflows/close-stale-issues.yml: close stale issues automatically
With this commit, actions/stale on GitHub will add a label 'stale' on issues (on spantaleev/matrix-docker-ansible-deploy) after 60 days of inactivity and close the stale issues after 7 days of inactivity. Only issues with labels 'question' and/or 'needs-info' will be processed, and ones with a label 'confirmed' will not be processed automatically.

Please refer https://github.com/marketplace/actions/close-stale-issues

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-22 13:57:29 +09:00
Slavi Pantaleev
0c9fc4358d Fix variable name typos (matrix_playbook_reverse_proxy_traefik_middleware_compession_* -> matrix_playbook_reverse_proxy_traefik_middleware_compression_*)
Supersedes https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3803
2024-11-21 12:23:01 +02:00
Slavi Pantaleev
659b7a000b
Merge pull request #3802 from spantaleev/renovate/traefik-3.x
Update dependency traefik to v3.2.1-0
2024-11-21 11:52:50 +02:00
renovate[bot]
67070f6951
Update dependency traefik to v3.2.1-0 2024-11-21 09:14:31 +00:00
Suguru Hirahara
e2d31ec9c3
Update docs/configuring-playbook-ma1sd.md (#3795)
* Update docs/configuring-playbook-ma1sd.md: edit top paragraphs

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-ma1sd.md: use common expressions for instruction to add configuration

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-ma1sd.md: move instructions up

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-ma1sd.md: move the instruction for additional features up

Move instructions for features which use the "matrix_ma1sd_configuration_extension_yaml" variable under "Additional features".

Also: adjust headers' level

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-ma1sd.md

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

* Update configuring-playbook-ma1sd.md: adjust to follow other examples such as on configuring-playbook-bridge-appservice-webhooks.md

This commit:

- Move the note about installing to the top
- Add warning emoji (⚠️: U+26A0 FE0F)
- Use a common expression to discourage installing

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-ma1sd.md: move instruction to configure DNS settings up

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Fix typo and add an extra newline

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-21 11:14:00 +02:00
Aine
ccd6c003ab
Synapse Admin v0.10.3-etke31
https://github.com/etkecc/synapse-admin/releases/tag/v0.10.3-etke31
2024-11-21 08:13:07 +02:00
Aine
9b72852afe
updated backup_borg (v1.4.0-1.9.2-0 -> v1.4.0-1.9.2-1); 2024-11-20 23:10:08 +02:00
Slavi Pantaleev
66febbcd72
Merge pull request #3800 from spantaleev/renovate/docker-7.x
Update dependency docker to v7.4.2
2024-11-20 19:44:29 +02:00
renovate[bot]
caef30064a
Update dependency docker to v7.4.2 2024-11-20 17:42:42 +00:00
Slavi Pantaleev
d0d563138e
Merge pull request #3798 from spantaleev/renovate/docker.io-metio-matrix-alertmanager-receiver-2024.x
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.11.20
2024-11-20 09:31:08 +02:00
renovate[bot]
5645ec0eda
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.11.20 2024-11-20 07:25:22 +00:00
Slavi Pantaleev
ef8581e323 Upgrade Postgres (v17.0-1 -> v17.0-2) 2024-11-20 09:24:43 +02:00
Aine
b363c17cd9
updated backup_borg (v1.4.0-1.9.1-0 -> v1.4.0-1.9.2-0); updated grafana (v11.3.0-0 -> v11.3.1-0); 2024-11-19 23:31:39 +02:00
Slavi Pantaleev
bccdcbe19b Upgrade baibot (v1.3.2 -> v1.4.0) 2024-11-19 22:47:14 +02:00
Slavi Pantaleev
373b158f75
Merge pull request #3797 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.86
2024-11-19 20:23:31 +02:00
renovate[bot]
2008b8595b
Update vectorim/element-web Docker tag to v1.11.86 2024-11-19 17:41:04 +00:00
Slavi Pantaleev
44cc2afc11
Merge pull request #3793 from luixxiul/fix
Edit docs/prerequisites.md: create categories for required software on the server and the local computer
2024-11-18 13:01:51 +02:00
Aine
769a31d3ca
adjust synapse purge jobs template 2024-11-18 10:00:12 +02:00
Suguru Hirahara
b1dec4a123
Edit docs/prerequisites.md: add an anchor link to the official documentation of passlib
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 15:46:26 +09:00
Suguru Hirahara
e38f433177
Edit docs/prerequisites.md: add an introductory paragraph
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 15:41:26 +09:00
Suguru Hirahara
12b67f7925
Edit docs/prerequisites.md: entries for local computer
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 15:41:04 +09:00
Suguru Hirahara
43d1760077
Edit docs/prerequisites.md: move the section for the local computer up
This change should make it easier to notice Ansible version requirement

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 15:40:44 +09:00
Suguru Hirahara
c7148d8b05
Edit docs/prerequisites.md: remove instructions to install whether on the remove server or on your local computer
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 15:40:20 +09:00
Suguru Hirahara
39c21816ca
Edit docs/prerequisites.md: create categories for required software on the remote server and local computer
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 15:39:54 +09:00
Suguru Hirahara
01bed6d512
Edit docs/prerequisites.md: add an item for a password generator
Since it is required to create and input a strong password (random strings) on vars.yml, this commit adds a password generator as a required software to configure and run the playbook. Password Tech, reportedly formerly known as "PWGen for Windows", is linked from https://github.com/jbernard/pwgen

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 15:39:13 +09:00
Slavi Pantaleev
54af9606db Fix incorrect variable name in docs/howto-srv-server-delegation.md (traefik_environment_variables -> traefik_environment_variables_additional_variables)
Ref: a008706c32/defaults/main.yml (L109-L115)
2024-11-18 07:44:44 +02:00
Slavi Pantaleev
3b0a433ec8
Merge pull request #3792 from luixxiul/fix
Update docs/registering-users.md: remove a section for recommending delegation
2024-11-18 07:40:02 +02:00
Suguru Hirahara
0df0f8578e
Update docs/registering-users.md: remove a section for recommending delegation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 12:23:25 +09:00
Slavi Pantaleev
ba0ef316cc
Merge pull request #3791 from luixxiul/fix
Update docs/registering-users.md: add details about delegation
2024-11-17 21:34:43 +02:00
Aine
7fc8509f04
synapse - update retention purge jobs template 2024-11-17 18:34:22 +02:00
Suguru Hirahara
6e9c143d56
Update docs/registering-users.md: add details about delegation
The change is based on 7e45325338106a09efbdd8db8daba09932bb866e.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-18 00:50:26 +09:00
Suguru Hirahara
7e45325338
Update docs/installing.md: add "Create your user account" section before "Finalize the installation" (#3789)
* Update docs/installing.md: add "Create your user account" section before "Finalize the installation"

docs/registering-users.md has correctly instructed that service delegation should be conducted after creating user accounts to finalize the installation process.

Since it does not really make sense to claim that installation has finished if there is not a user, this commit adds instruction to create a user account before configuring server delegation.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/installing.md

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

* Update installing.md: remove a whitespace character

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-17 17:42:12 +02:00
Slavi Pantaleev
fa85ba28dd
Merge pull request #3788 from luixxiul/fix
Fix broken anchor links
2024-11-17 14:42:25 +02:00
Suguru Hirahara
5e4c930d90
Fix broken anchor links
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-17 21:30:47 +09:00
Slavi Pantaleev
8078a743e2
Merge pull request #3787 from luixxiul/fix
Update docs/configuring-playbook-bridge-hookshot.md: fix link to main.yml
2024-11-17 14:14:40 +02:00
Aine
5bf09f5fdc
add new variables to control message retention in Synapse 2024-11-17 13:47:06 +02:00
Suguru Hirahara
8f11e1d5bc
Update docs/configuring-playbook-bridge-hookshot.md: fix link to main.yml
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-17 20:24:01 +09:00
Suguru Hirahara
a6cdb2c571
Update docs/configuring-dns.md (#3786)
* Update docs/configuring-dns.md: add note about DNS settings for default services

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md and docs/configuring-playbook-ma1sd.md: move the DNS setting (SRV record) for ma1sd to the latter

Edit instruction to enable a SRV record for ma1sd.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: remove repetitive explanations about necessity of subdomain settings

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: move explanation about subdomain settings up

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: fix tables layout

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: edit the section for TXT and MX records

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: move the row for ma1sd under the rows for CNAME records

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: replace "may be necessary" with "is necessary" as Element Web is installed by default

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: add a note about setting a SRV record for ma1sd

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: use the same string for IP address placeholder

Also: adjust the table's layout

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: simplify the header for postmoogle DNS records configuration

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: switch the order of TXT and MX moogle for Postmoogle

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: simplify instructions for ma1sd and Postmoogle

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-dns.md: fix the anchor link to rageshake documentation

The issue was introduced with ea6e8794870074c6ebffc0ac3893c82eca0e0aa6

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-17 10:10:40 +02:00
Slavi Pantaleev
8f9dfdee4e
Merge pull request #3785 from luixxiul/fix
Edit docs/configuring-playbook-client-schildichat-web.md
2024-11-17 09:43:57 +02:00
Suguru Hirahara
3c23b643d8
Edit docs/configuring-playbook-client-schildichat-web.md: update the paragraph for warning
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-17 15:50:21 +09:00
Suguru Hirahara
4f87328ff1
Mention publicly hosted services for SchildiChat
This commit basically follows 3a118811208aa14361bc43c5265b0e21730bf63a.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-17 15:50:14 +09:00
Slavi Pantaleev
d8c288c941
Merge pull request #3784 from xylobol/patch-1
Correct issuer URL in OIDC example section
2024-11-17 08:48:59 +02:00
Slavi Pantaleev
e5c4650cf8
Merge pull request #3783 from luixxiul/fix
Change "Configuring your DNS server" to "Configuring your DNS settings"
2024-11-17 08:42:33 +02:00
Daniel Vinci
ab3c4edea7
Correct issuer URL in OIDC example section
Keycloak exposes the issuer information on /realms/whatever, not /auth/realms/whatever.
2024-11-16 20:56:15 -07:00
Suguru Hirahara
135039b276
Change "Configuring your DNS server" to "Configuring your DNS settings"
Essentially it means "configuring your DNS settings or records on the DNS server you use".

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-17 12:06:30 +09:00
Slavi Pantaleev
09c42477bb
Merge pull request #3781 from spantaleev/renovate/dock.mau.dev-mautrix-slack-0.x
Update dock.mau.dev/mautrix/slack Docker tag to v0.1.3
2024-11-16 21:08:52 +02:00
Slavi Pantaleev
bba3b95344
Merge pull request #3782 from spantaleev/renovate/dock.mau.dev-mautrix-whatsapp-0.x
Update dock.mau.dev/mautrix/whatsapp Docker tag to v0.11.1
2024-11-16 21:08:45 +02:00
Slavi Pantaleev
757233d53c
Merge pull request #3780 from spantaleev/renovate/dock.mau.dev-mautrix-signal-0.x
Update dock.mau.dev/mautrix/signal Docker tag to v0.7.3
2024-11-16 21:08:15 +02:00
renovate[bot]
c7f8b7cd1a
Update dock.mau.dev/mautrix/whatsapp Docker tag to v0.11.1 2024-11-16 19:08:04 +00:00
Slavi Pantaleev
471e004ff7
Merge pull request #3779 from spantaleev/renovate/dock.mau.dev-mautrix-meta-0.x
Update dock.mau.dev/mautrix/meta Docker tag to v0.4.2
2024-11-16 21:08:04 +02:00
renovate[bot]
83e9818db7
Update dock.mau.dev/mautrix/slack Docker tag to v0.1.3 2024-11-16 19:07:58 +00:00
Slavi Pantaleev
cdbdb43514 Upgrade Jitsi (v9823-0 -> v9823-1) 2024-11-16 21:07:24 +02:00
Slavi Pantaleev
131e164e46
Merge pull request #3777 from spantaleev/renovate/dock.mau.dev-mautrix-gmessages-0.x
Update dock.mau.dev/mautrix/gmessages Docker tag to v0.5.2
2024-11-16 20:48:14 +02:00
Slavi Pantaleev
af89261b92
Merge pull request #3776 from spantaleev/renovate/dock.mau.dev-mautrix-discord-0.x
Update dock.mau.dev/mautrix/discord Docker tag to v0.7.1
2024-11-16 20:48:04 +02:00
Slavi Pantaleev
bb827f44b1
Merge pull request #3775 from luixxiul/fix
Edit documentation pages for installation procedure
2024-11-16 20:45:47 +02:00
renovate[bot]
dd23e2d1c9
Update dock.mau.dev/mautrix/signal Docker tag to v0.7.3 2024-11-16 18:13:30 +00:00
renovate[bot]
8937572939
Update dock.mau.dev/mautrix/meta Docker tag to v0.4.2 2024-11-16 18:13:27 +00:00
renovate[bot]
ce46511563
Update dock.mau.dev/mautrix/gmessages Docker tag to v0.5.2 2024-11-16 16:33:53 +00:00
renovate[bot]
9a1e08b2f0
Update dock.mau.dev/mautrix/discord Docker tag to v0.7.1 2024-11-16 16:33:50 +00:00
Suguru Hirahara
ac02351ab7
Update docs/configuring-playbook.md and docs/installing.md: remove anchor links to other installation procedure pages
They are redundant as there are breadcrumbs on each page

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-16 23:47:41 +09:00
Suguru Hirahara
76e6bf3966
Remove redundante whitespace characters from the breadcrumbs
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-16 23:47:18 +09:00
Suguru Hirahara
439e012f03
Add U+25B6 (BLACK RIGHT-POINTING TRIANGLE) characters to installation procedure navigation
Set anchor links to those characters as well.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-16 23:44:11 +09:00
Slavi Pantaleev
edc24022f2
Merge pull request #3774 from luixxiul/fix
Update docs/howto-server-delegation.md: related to removal of matrix-nginx-proxy
2024-11-16 15:20:22 +02:00
Suguru Hirahara
c97dbc9ec6
Update docs/howto-server-delegation.md: related to removal of matrix-nginx-proxy
The current ToC was added by 065b70203ded30412d3d03ff5ad3e885f55ab78b, but the links were initially added by ef903fe544398e04f4f247e7146457fae2a7d8ae as a navigation to sections under them. This commit replaces the ToC with such navigation.

Also, one of the sections was removed by f4f3d575207c6207b53d1e61d9b877f30971b6ee, and since matrix-nginx-proxy was removed, it seems to me that letting Synapse handle Federation by itself would be simpler than the other method which requires setting another webserver. Therefore this commit switches the alternative method from using another webserver to using Synapse.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-16 17:36:46 +09:00
Suguru Hirahara
f19cbe6dd4
Edit documentation related to server delegation (#3773)
* Update docs/configuring-playbook-base-domain-serving.md: add an anchor link to docs/configuring-dns.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update documentation related to server delegation

Summary:
- Add explanation about server delegation and DNS setting for it to docs/configuring-dns.md; "delegation" is a technical term and it is worth being explained simply
- Edit explanation about delegation to docs/configuring-playbook-base-domain-serving.md
- Use common expressions
- Simplify explanation about delegation on docs/configuring-well-known.md and move explanation about the alternative which avoids involving the base domain from that page to its upper documentation, which is docs/howto-server-delegation.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Apply suggestions from code review

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

* Update docs/configuring-dns.md: iterate

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Fix an anchor link to howto-srv-server-delegation.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Minor rewording

* Minor rewording

* Minor rewording

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-16 09:19:17 +02:00
Slavi Pantaleev
774f3de863
Merge pull request #3772 from luixxiul/fix
Update docs/configuring-playbook-federation.md: add note about setting server delegation
2024-11-15 14:23:37 +02:00
Suguru Hirahara
f802df6e6d
Update docs/configuring-playbook-federation.md: add note about setting server delegation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-15 18:01:19 +09:00
Slavi Pantaleev
f62bdcc697
Merge pull request #3771 from luixxiul/fix
Make hierarchy among documentation pages related to installation
2024-11-15 09:12:49 +02:00
Suguru Hirahara
b94d4d1862
Establish a hierarchy among documentation pages related to installation; ones about importing data and configuring server delegation
This commit clarifies the hierarchy among pages for installation by moving articles for importing data and server delegation under the "installation" section, as there are multiple documentation pages which discuss a similar topic and you can easily get lost in those pages.

Also: remove the anchor link to configuring-playbook-base-domain-serving.md from configuring-playbook.md, since that procedure is not required on configuring options but on finalizing the installation, which is discussed on installing.md after that page.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-15 16:11:44 +09:00
Slavi Pantaleev
f7d4ffc20c FIx indentation and reword a paragraph on docs/configuring-well-known.md
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3767
2024-11-15 08:38:18 +02:00
Suguru Hirahara
04cf09bdb0
Update docs/configuring-well-known.md and docs/installing.md (#3767)
* Update docs/configuring-well-known.md: remove redundant information

For example, anchor links to the headers are distractive as these headers are displayed by scrolling a bit.

Also: edit section headers

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-well-known.md: add "Support service discovery" as a type of well-known service discovery

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-well-known.md: recategorize the sections about installing well-known files on the base domain's server

The commit merges the content of the option 2 with the section above, as both explain how to serve the base domain via the playbook and claim it is the easy way of installing well-known files, and therefore the content is repetitive.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-well-known.md: create a section for types of well-known service discovery mechanism

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-well-known.md: add a link to the Matrix Specification, to which MSC 1929 was implemented

MSC 1929 has no longer been for an early adopter.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-well-known.md: iterate

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook-base-domain-serving.md

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

* Update docs/configuring-well-known.md

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

* Update docs/installing.md: iterate

Summary:
- Try to reflect review comments
- Declare that the shorter user identifier is recommended
- Add a note about installing the server matrix.example.com directly, with the link to the FAQ entry

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/installing.md: replace the anchor link to docs/configuring-well-known.md with one to docs/howto-server-delegation.md

Service Discovery via .well-known files is one of the two ways for server delegation, and it is possible to set up server delegation via a DNS SRV record instead (though it is more advanced and complicated), so it should be more proper to use the words "delegation/redirection" than "service discovery".

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-well-known.md: fix a typo

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-15 08:34:21 +02:00
Slavi Pantaleev
91787fc0bd Announce HTTP-compression and timeout adjustments for Traefik-based setups 2024-11-14 17:13:14 +02:00
Slavi Pantaleev
57c5271d9d Enable (Traefik compression middleware)-assisted compression for synapse-reverse-proxy-companion
This likely breaks QR code login for Synapse-worker setups.

See https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3749
2024-11-14 16:30:09 +02:00
Slavi Pantaleev
609cf5940e Enable (Traefik compression middleware)-assisted compression for Synapse
This likely breaks QR code login for non-worker Synapse setups.

See https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3749
2024-11-14 16:24:30 +02:00
Slavi Pantaleev
4a61bd49e3 Enable (Traefik compression middleware)-assisted compression for Cinny, Element & Hydrogen 2024-11-14 15:54:10 +02:00
Slavi Pantaleev
5cad571296 Add variables & wiring to support Traefik's compression middleware
This merely hooks the playbook to the Traefik role's compression
middleware configuration (`traefik_config_http_middlewares_compression_*`)

The Traefik role enables the `compression` middleware by default.

Actual usage will land in a future commit.
2024-11-14 15:54:10 +02:00
Slavi Pantaleev
4bb16fef54 Increase default Traefik readTimeout for web/web-secure/matrix-federation entrypoints (60s -> 300s) to accommodate large/slow file uploads 2024-11-14 15:54:10 +02:00
Slavi Pantaleev
bddd6015ad Upgrade Traefik (v3.2.0-0 -> v3.2.0-1) 2024-11-14 15:54:10 +02:00
Aine
ebb3b0c249
Synapse Admin v0.10.3-etke30 2024-11-14 09:31:40 +02:00
Slavi Pantaleev
58a8f79d95 Remove gzip support from synapse-reverse-proxy-companion
gzipping certain responses is known to cause problems with QR code logins.

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

Gzipping at the synapse-reverse-proxy-companion level and not at the
level of the outer-most reverse-proxy (Traefik) also sounds non-ideal.

This change only affects setups powered by Synapse workers.

Non-worker setups (and setups powered by other homeservers) were not
having their requests go through synapse-reverse-proxy-companion anyway,
so this change does not affect them.

Future patches may enable response compression support at the Traefik level for
all setups.
2024-11-13 21:48:18 +02:00
Slavi Pantaleev
5f6c3c27d8 Fix site-packages path for Synapse v1.119.0
Related to:

- https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3768
- https://github.com/element-hq/synapse/pull/17887
2024-11-13 21:41:06 +02:00
Slavi Pantaleev
0865e32635
Merge pull request #3768 from spantaleev/renovate/ghcr.io-element-hq-synapse-1.x
Update ghcr.io/element-hq/synapse Docker tag to v1.119.0
2024-11-13 21:40:10 +02:00
renovate[bot]
946ec39954
Update ghcr.io/element-hq/synapse Docker tag to v1.119.0 2024-11-13 17:41:24 +00:00
Slavi Pantaleev
26f91e5944
Merge pull request #3763 from luixxiul/fix
Update docs/installing.md: add a link to maintenance-migrating.md
2024-11-12 21:08:02 +02:00
Slavi Pantaleev
cce3f23a74
Merge pull request #3766 from adam-kress/master
Upgrade Jitsi (v9779-0 -> v9823-0)
2024-11-12 18:15:15 +02:00
adam-kress
895ac02db8
Upgrade Jitsi (v9779-0 -> v9823-0) 2024-11-12 11:03:44 -05:00
Aine
9854dc0a71
grafana v11.3.0; cinny v4.2.3 2024-11-12 14:35:47 +02:00
Slavi Pantaleev
9b99e41fba Upgrade Element Web (v1.11.84 -> v1.11.85) 2024-11-12 13:46:36 +02:00
Slavi Pantaleev
763dcec11f Upgrade baibot (v1.3.1 -> v1.3.2) 2024-11-12 13:45:22 +02:00
Aine
6f3fa72317
borgmatic v1.9.1 2024-11-11 10:44:05 +02:00
Suguru Hirahara
73e2531293
Update docs/installing.md: add a link to maintenance-migrating.md
The guide is more simple and straightforward.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-10 11:50:20 +09:00
Slavi Pantaleev
509542ccaf Enable QR code login (MSC4108) support for Synapse when Matrix Authentication Service is enabled
Related to 8a6b822bbd80ca3cdb25b0cd29bf369b6b0ce2e1

Related to https://github.com/matrix-org/matrix-spec-proposals/pull/4108

Potential (unconfirmed) fix for https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3749
2024-11-09 21:19:40 +02:00
Slavi Pantaleev
3a11881120 Mention publicly hosted services for Cinny, Element and synapse-admin 2024-11-09 21:18:39 +02:00
Slavi Pantaleev
92086867eb
Merge pull request #3761 from luixxiul/fix
Update docs/installing.md
2024-11-09 21:06:47 +02:00
Slavi Pantaleev
d34b490a3d Announce auto-configuration for synapse-admin
Related to https://github.com/etkecc/synapse-admin/pull/126
2024-11-09 10:49:41 +02:00
Suguru Hirahara
61f7f8ff50
Update docs/installing.md
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-09 17:35:52 +09:00
Suguru Hirahara
60dca4dd46
Update docs/installing.md
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-09 17:33:27 +09:00
Suguru Hirahara
6d1b4781c9
Update docs/installing.md: remove the link to itself
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 14:08:27 +09:00
Suguru Hirahara
58603d79bc
Update docs/installing.md: replace the just recipe with the ansible-playbook command
The concept of the just recipe is explained at the bottom of the page, therefore it should be safe to avoid using it here and prefer the ansible-playbook command like above.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 13:53:52 +09:00
Suguru Hirahara
5a85bec895
Update docs/installing.md: move example.com base domain
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 12:12:43 +09:00
Suguru Hirahara
50d1a8558e
Update docs/installing.md: edit the heading "Install Matrix"
Matrix is a name of the protocol and it does not really make sense to install it.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:54:47 +09:00
Suguru Hirahara
f8b44a8eca
Update docs/installing.md: mention just's "recipe"
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:29:09 +09:00
Suguru Hirahara
e6b4ffdd93
Update docs/installing.md: add note about making sure of proper installation of required software
Until recently there have been a lot of questions about installing, which could have been avoided if required software such as compatible version of Ansible was installed. This note should encourage those who experience basic error to troubleshoot before giving up.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:29:03 +09:00
Suguru Hirahara
5e23dee4bb
Update docs/installing.md: add missing periods
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:28:57 +09:00
Suguru Hirahara
5dccd4e106
Update docs/installing.md: create "Update Ansible roles" section
Also: mention running "just" role on maintainance

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:28:51 +09:00
Suguru Hirahara
ea48e5e9eb
Create docs/playbook-tags.md: move explanation about playbook tags
The playbook tags are not limited to installation, and the explanation's detail makes the section worth being split to a dedicated individual page.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:28:45 +09:00
Suguru Hirahara
66a812d99c
Update docs/installing.md: remove numbering from headers and links to the headers
Remove nagivations for simplicity.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:28:39 +09:00
Suguru Hirahara
578b6b7ab7
Update docs/installing.md: move "Maintaining your setup in the future" under "Things to do next"
Maintenance work by running the playbook will be required after finalizing the installation

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:28:32 +09:00
Suguru Hirahara
e02dd88ed0
Update docs/installing.md: add instruction to serve the base domain
The instruction describes the easiest way of configuring Service Discovery (which is required for federation) should help to understand what basically to be done to finalize the installation.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-09 03:28:25 +09:00
Aine
7a77d84276
synapse-admin: get rid of lookup and config duplicate var 2024-11-08 18:47:37 +02:00
Slavi Pantaleev
28a4434f55 Document why matrix_synapse_admin_well_known_client_configuration duplicates matrix_synapse_admin_configuration (roles/custom/matrix-synapse-admin/templates/config.json.j2) 2024-11-08 18:34:50 +02:00
Aine
30efde4ed3
add missing synapse-admin config options to /.well-known/matrix/client 2024-11-08 18:04:01 +02:00
Slavi Pantaleev
0cb3e530d9 Add support for auto-configuring synapse-admin via /.well-known/matrix/client
Related to:
- https://github.com/etkecc/synapse-admin/pull/126
- https://github.com/etkecc/synapse-admin/releases/tag/v0.10.3-etke27

People who wish to disable this and keep their `/.well-known/matrix/client` file tidier
can do it via:

```yml
matrix_static_files_file_matrix_client_property_cc_etke_synapse_admin_enabled: false
```
2024-11-08 17:48:37 +02:00
Slavi Pantaleev
260421beb1
Merge pull request #3760 from luixxiul/fix
Edit the note about "matrix_homeserver_implementation" variable
2024-11-08 17:02:45 +02:00
Suguru Hirahara
3c34418ebe
Edit the note about "matrix_homeserver_implementation" variable
Since a casual user might want to try another homeserver than Synapse without thinking about its consequence, it is important to clarify that it is not possible to switch homeservers once specified.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-08 23:59:14 +09:00
Slavi Pantaleev
885b8e9204
Merge pull request #3759 from luixxiul/fix
Fix capitalization: element, ids, riot
2024-11-08 16:21:37 +02:00
Suguru Hirahara
2fcd824d6b
Fix capitalization: riot → Riot
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-08 20:36:35 +09:00
Suguru Hirahara
b61d8f478f
Fix capitalization: ids → IDs
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-08 20:31:07 +09:00
Suguru Hirahara
3af7355d14
Fix capitalization: element → Element
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-08 20:30:59 +09:00
Slavi Pantaleev
fcf3755f9c
Merge pull request #3758 from luixxiul/fix
Update docs/container-images.md: use emoji
2024-11-08 10:28:24 +02:00
ikkemaniac
73a30375fa
Improve readability - configuring-playbook-own-webserver.md (#3751)
* Improve readability -  configuring-playbook-own-webserver.md

* Update docs/configuring-playbook-own-webserver.md

Co-authored-by: Suguru Hirahara <luixxiul@users.noreply.github.com>

---------

Co-authored-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
2024-11-08 10:20:06 +02:00
Suguru Hirahara
d8cacb9cde
Update docs/container-images.md: use emoji
Follow-up to 1a87f92647c583826920cb695ddfbdadce3e8d2d.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-08 13:25:00 +09:00
Slavi Pantaleev
f4eada6f10
Merge pull request #3756 from luixxiul/fix
Update docs/configuring-playbook-sliding-sync-proxy.md: Element X is no longer beta
2024-11-07 20:43:46 +02:00
Suguru Hirahara
02a2b4d4d1
Update docs/configuring-playbook-sliding-sync-proxy.md: Element X is no longer beta
Since 2023-09-21, Element X is no longer beta. See https://element.io/blog/element-x-ignition/

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-08 00:18:28 +09:00
Suguru Hirahara
b04b658735
Add "Web" to Element and SchildiChat web application (#3755)
* Replace "Element" with "Element Web"

- If Element indicates the web application, then it is changed to Element Web.
- If it indicates clients branded with Element such as Element desktop, web, mobile clients, then it is changed to Element clients.
- If it is combined with location sharing functionality, it is not changed.

with other some changes, including:

- Change "app.element.io" anchor link to "https://github.com/element-hq/element-web" on README.md, following other documentation files

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Replace "SchildiChat" with "SchildiChat Web"

- If SchildiChat indicates the web application, then it is changed to SchildiChat Web.
- If it indicates clients branded with SchildiChat such as SchildiChat desktop, web, mobile clients, then it is changed to SchildiChat clients.
- If it is combined with location sharing functionality, it is not changed.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Rename configuring-playbook-client-schildichat.md to configuring-playbook-client-schildichat-web.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Rename configuring-playbook-client-element.md to configuring-playbook-client-element-web.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-07 16:31:26 +02:00
Aine
8308a91afa
synapse-admin v0.10.3-etke29 2024-11-07 13:05:09 +02:00
Aine
513320199a
Merge pull request #3754 from spantaleev/add-oembed-var
add matrix_synapse_oembed_additional_providers var
2024-11-07 11:10:32 +02:00
Aine
95aaf76d0d
add matrix_synapse_oembed_additional_providers var 2024-11-07 11:08:40 +02:00
Aine
fc2f09d124
another aux role update 2024-11-07 10:56:24 +02:00
Aine
fa2ba3e04c
Update aux role 2024-11-07 09:47:31 +02:00
Aine
da181d72f0
Merge pull request #3752 from spantaleev/renovate/prometheus-2.x
Update dependency prometheus to v2.55.1-0
2024-11-06 14:07:33 +02:00
renovate[bot]
1da02aee3d
Update dependency prometheus to v2.55.1-0 2024-11-06 11:08:07 +00:00
Slavi Pantaleev
1a87f92647 Emojify main README
✓ and x indicators provide less visibility, as they're very similarly
looking.

Emojis (especially when colored) make it much easier to see which
component is a default one and which isn't.

Section headings are also prefixed with an emoji now to make
decrease the "wall of text" feeling.
2024-11-06 09:24:46 +02:00
Slavi Pantaleev
db57c95cc0 Remove redundant Installation section from main README
Superseded by the new "Getting started" section, which is higher up and
gets more visibility.
2024-11-06 09:17:55 +02:00
Suguru Hirahara
1b4fa79595
Update docs/registering-users.md: add configuration for enabling public user registration on Dendrite (#3748)
* Update docs/registering-users.md: add configuration for enabling public user registration on Dendrite

Per the suggestion on https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2545

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Set matrix_dendrite_client_api_registration_disabled to false

Mind "matrix_synapse_enable_registration" for Synapse is set to false by default.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-05 19:30:03 +02:00
Aine
40d1a526b1
Merge pull request #3750 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.84
2024-11-05 18:30:13 +02:00
renovate[bot]
261b5dee07
Update vectorim/element-web Docker tag to v1.11.84 2024-11-05 16:25:11 +00:00
Slavi Pantaleev
8b9833bfd2
Merge pull request #3747 from luixxiul/fix
Update docs/configuring-dns.md and docs/prerequisites.md: add the common horizontal line
2024-11-05 15:41:56 +02:00
Suguru Hirahara
0a2198f754
Update docs/configuring-dns.md and docs/prerequisites.md: add the common horizontal line
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-05 22:30:21 +09:00
Suguru Hirahara
3684e93a61
Add hard-coded breadcrumbs to documentation files about installation procedure for easier navigation (#3745)
* Add hard-coded breadcrumbs to documentation files about installation procedure for easier navigation

Since it is easy to get lost among these files, the breadcrumbs should be helpful to get the whole picture of the procedure. Hopefully they will be replaced with something else generated automatically.

Please note that the usage of <sup> HTML tags on this context is not proper as the tag is intended to be used only for typographical reasons. Here <small> tags should rather be used instead as long as we do not use CSS, but since GitHub strips these tags against its spec (https://github.github.com/gfm/#disallowed-raw-html-extension-) (also note: the <small> HTML tags are not stripped on Codeberg for example), this commit intentionally uses <sup> to have those breadcrumbs rendered in small points.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/configuring-playbook.md title

The file is referred from other files as "Configuring the playbook"

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add "Quick start" link with the thunder icon

For now docs/README.md is linked

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-05 14:38:26 +02:00
Slavi Pantaleev
eb452b4e3e
Merge pull request #3744 from luixxiul/fix
Update docs/configuring-dns.md: remove an incorrect instruction to the next step
2024-11-05 10:43:29 +02:00
Slavi Pantaleev
c8c83252be Add "Getting started" section to main README
We were linking to the "guided installation" even now, but there are so
many links and no explicit "Getting started" link anywhere.
This tries to make things better.

Inspired by:

- https://news.ycombinator.com/item?id=42039447
- https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3744
2024-11-05 10:39:05 +02:00
Slavi Pantaleev
9e5bb8629c Move sliding-sync proxy Note to the top of its docs page
People should be made aware of the status of this component as soon as
possible.

This is consitent with the positioning of Note messages we have for other deprecated
components (e.g. bot-chatgpt, bot-go-neb, etc).

Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3735
2024-11-05 09:46:02 +02:00
Slavi Pantaleev
4cd4835888 De-emphasize the old sliding-sync proxy further
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3735
2024-11-05 09:41:16 +02:00
1over137
065d3ac066
Documentation: sliding sync proxy is not required for Synapse >1.114 (#3735)
* Update configuring-playbook-sliding-sync-proxy.md

* Update README.md

* Apply suggestions from code review

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

---------

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-05 09:37:11 +02:00
Slavi Pantaleev
c720e9531c Upgrade backup-borg (v1.4.0-1.9.0-1 -> v1.4.0-1.9.0-2) 2024-11-05 09:06:32 +02:00
Suguru Hirahara
bb84d6f70a
Update docs/configuring-dns.md: remove an incorrect instruction to the next step
The right next step of docs/configuring-dns.md is docs/getting-the-playbook.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-05 11:58:23 +09:00
Aine
68342eda10
Merge pull request #3742 from luixxiul/fix
Update docs/installing.md: add a note to avoid running the just recipe install-all, instead of ansible-playbook with install-all tag
2024-11-04 19:58:24 +02:00
Aine
b9b37f34e1
Merge pull request #3743 from mitjajez/patch-1
Update installing.md
2024-11-04 19:57:55 +02:00
Mitja Jež
d817a923a3
Update installing.md
I believe this is typo.
2024-11-04 18:21:46 +01:00
Suguru Hirahara
4bd511819f
Update docs/installing.md: add a note to avoid running the just recipe install-all, instead of ansible-playbook with install-all tag
The note is for those who are not familiar with the playbook's tag and its just recipe.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-04 23:00:25 +09:00
Aine
d689a73f93
update backup-borg role 2024-11-04 14:17:44 +02:00
Aine
bcc6c4022d
Merge pull request #3740 from spantaleev/renovate/backup_borg-1.x
Update dependency backup_borg to v1.4.0-1.9.0-0
2024-11-04 12:38:38 +02:00
renovate[bot]
cc3641d7c0
Update dependency backup_borg to v1.4.0-1.9.0-0 2024-11-04 10:21:44 +00:00
Slavi Pantaleev
71b00a817d
Merge pull request #3738 from luixxiul/fix
Update documentation related to FAQ
2024-11-04 10:47:23 +02:00
Slavi Pantaleev
a2d193f163 Upgrade Traefik (v3.1.3-3 -> v3.2.0-0) 2024-11-04 10:30:52 +02:00
Slavi Pantaleev
6b83f00f8e Upgrade Traefik (v3.1.3-2 -> v3.1.3-3) 2024-11-04 10:28:09 +02:00
Suguru Hirahara
79680c5ac1
Update i-need-help.md: add notification about FAQ.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-04 16:27:47 +09:00
Suguru Hirahara
ae4dd1ea3a
Update docs/faq.md: fix headings level
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-04 16:27:39 +09:00
Slavi Pantaleev
970ae997b6
Merge pull request #3736 from ikkemaniac/patch-1
improve readability configuring-dns.md
2024-11-04 08:31:27 +02:00
Slavi Pantaleev
08a19ac4ee
Merge pull request #3737 from luixxiul/fix
Update README.md and docs/container-images.md
2024-11-04 08:13:40 +02:00
Suguru Hirahara
7b9aaceb7e
Update README.md and docs/container-images.md: move "synapse-simple-antispam" to Authentication, following docs/configuring-playbook.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-04 13:11:37 +09:00
Suguru Hirahara
c8ee67aa3b
Update README.md and docs/container-images.md: move up Exim as default service
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-04 13:10:26 +09:00
ikkemaniac
7864a75607
improve readability configuring-dns.md 2024-11-03 21:08:10 +01:00
Slavi Pantaleev
8078a8ad2e
Merge pull request #3734 from luixxiul/fix
Update docs/configuring-playbook.md: adopt the same structure and order for entries as ones on README.md
2024-11-03 21:08:42 +02:00
Suguru Hirahara
68b8f1137f
Update docs/configuring-playbook.md and docs/container-images.md: add explanations to each section
These sentences are copied from README.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:43:06 +09:00
Suguru Hirahara
16104b6e57
Update docs/configuring-playbook.md: move entries to "Other specialized services" section
These entries are ones categorized under "Misc" section on README.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:41:59 +09:00
Suguru Hirahara
69273b30e4
Update docs/configuring-playbook.md: create "Administration" section
Reorganize "Additional useful services" section and "Other specialized services" section

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:39:54 +09:00
Suguru Hirahara
d630668f46
Update docs/configuring-playbook.md: move "Additional useful services" section down under "Bots" section
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:38:45 +09:00
Suguru Hirahara
2376821722
Update docs/configuring-playbook.md: create "File Storage" section under "Authentication and user-related" section
This basically follows the order of the tables on README.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:37:59 +09:00
Suguru Hirahara
eaeb2f99b5
Update docs/configuring-playbook.md: move "Authentication and user-related" section up
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:37:40 +09:00
Suguru Hirahara
15fd33fb45
Update docs/configuring-playbook.md: merge "Server connectivity" section to "Core service adjustments" section
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:37:13 +09:00
Suguru Hirahara
c404995456
Update docs/configuring-playbook.md: create a list for server components based on the table on README.md
Also: update README.md and docs/container-images.md

Move Sygnal and ntfy from "Server Components" to "Misc", following the existing categorization on docs/configuring-playbook.md where they are categorized as "Other specialzed services". This categorization makes more sense as they are not really services which make the components on the server work (per README.md)

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:34:41 +09:00
Suguru Hirahara
7511b3d3ea
Update docs/configuring-playbook.md: create a section "Clients"
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:32:59 +09:00
Suguru Hirahara
6e92a5da3f
Update docs/configuring-playbook.md: move "Core service adjustments" section up
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 19:32:03 +09:00
Slavi Pantaleev
22ef4aed3c
Merge pull request #3732 from luixxiul/fix
Update docs/configuring-playbook.md: remove "optional" from links
2024-11-03 11:29:59 +02:00
Suguru Hirahara
55d9aa04c2
Update docs/configuring-playbook.md: remove "optional" from links
Setting "optional" is redundant for those entries, as all of them are under the heading "Other configuration options" and it is obvious that those settings are optional.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 17:07:43 +09:00
Slavi Pantaleev
4a5243228c
Merge pull request #3731 from luixxiul/fix
Fix capitalization: draupnir → Draupnir
2024-11-03 09:57:12 +02:00
Suguru Hirahara
5ef203777f
Fix capitalization: draupnir → Draupnir
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 16:53:01 +09:00
Slavi Pantaleev
b3f3fca295
Merge pull request #3730 from luixxiul/fix
Update docs/updating-users-passwords.md
2024-11-03 08:11:34 +02:00
Suguru Hirahara
1886a8fc4d
Update docs/updating-users-passwords.md: fix SQL command
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 12:54:15 +09:00
Suguru Hirahara
f8c9507ae1
Update docs/updating-users-passwords.md: triple backticks for syntax highlighting
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 12:53:35 +09:00
Slavi Pantaleev
9a9b913bc5
Merge pull request #3727 from luixxiul/fix
Update docs/configuring-playbook-bridge-appservice-webhooks.md
2024-11-02 21:41:31 +02:00
Suguru Hirahara
c6f0b290bc
Update docs/configuring-playbook-bridge-appservice-webhooks.md
Use a common expression for adjusting configuration. As the component has been deprecated, this is purely for future use as a template.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-03 01:59:26 +09:00
Suguru Hirahara
fd1d3e6bfc
Update docs/configuring-playbook-backup-borg.md (#3724)
* Update docs/configuring-playbook-backup-borg.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Reflect the feedback

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-02 17:38:06 +02:00
Slavi Pantaleev
f8ef45a9a3
Merge pull request #3725 from spantaleev/renovate/joseluisq-static-web-server-2.x
chore(deps): update joseluisq/static-web-server docker tag to v2.33.1
2024-11-02 16:46:17 +02:00
renovate[bot]
af992fb43b
chore(deps): update joseluisq/static-web-server docker tag to v2.33.1 2024-11-02 13:38:33 +00:00
Slavi Pantaleev
34f9cd9435
Merge pull request #3723 from spantaleev/renovate/ghcr.io-etkecc-postmoogle-0.x
chore(deps): update ghcr.io/etkecc/postmoogle docker tag to v0.9.24
2024-11-02 11:24:24 +02:00
renovate[bot]
2ac89b7fb2
chore(deps): update ghcr.io/etkecc/postmoogle docker tag to v0.9.24 2024-11-02 09:23:23 +00:00
Slavi Pantaleev
0a192bcfcf
Merge pull request #3722 from luixxiul/fix
Update docs/configuring-playbook-s3.md: replace the URL to matrix-media-repo
2024-11-02 11:23:00 +02:00
Suguru Hirahara
018a8c8fdf
Update docs/configuring-playbook-s3.md: replace the URL to matrix-media-repo
The URL stopped working since some time. Linking to the internal file will keep working as long as the URL is properly managed.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-02 18:16:29 +09:00
Slavi Pantaleev
48a2ee2db1
Merge pull request #3721 from luixxiul/fix
Update docs/configuring-playbook-backup-borg.md and docs/configuring-playbook-ntfy.md: fix URLs
2024-11-02 11:03:15 +02:00
Suguru Hirahara
6b5c66675a
Update docs/configuring-playbook-backup-borg.md and docs/configuring-playbook-ntfy.md: fix URLs
Remove "/-/" from the URLs, which is a fragment of URLs on GitLab

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-02 17:56:56 +09:00
Slavi Pantaleev
c085efc9e0
Merge pull request #3718 from luixxiul/fix
Update docs/container-images.md: create tables following README.md
2024-11-02 10:36:07 +02:00
Slavi Pantaleev
3c5664b809
Merge pull request #3720 from luixxiul/patch-1
Update files related to repository management
2024-11-02 10:33:33 +02:00
Suguru Hirahara
94cb9bad32
Update .github/renovate.json: add "dependencies" label
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-02 13:26:12 +09:00
Suguru Hirahara
04488f4599
Add .github/ISSUE_TEMPLATE/config.yml
- Disable blank (without using a template) issue
- Add a contact link to the support room on Matrix

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-02 13:26:04 +09:00
Aine
39018f7f4d
borgbackup: fix postgres version detection mechanism 2024-11-01 19:07:38 +02:00
Suguru Hirahara
24ab56b1bc
Update docs/container-images.md: create a table for deprecated or unmaintained services
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:35:52 +09:00
Suguru Hirahara
c2859c727c
Update docs/container-images.md: create a table for Misc
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:35:48 +09:00
Suguru Hirahara
a4619fec25
Update docs/container-images.md: create a table for Administration
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:35:44 +09:00
Suguru Hirahara
292dd56eed
Update docs/container-images.md: create a table for Bots
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:35:39 +09:00
Suguru Hirahara
2b12ccb517
Update docs/container-images.md: create a table for Bridges
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:35:34 +09:00
Suguru Hirahara
d90dcc4a04
Update docs/container-images.md: create a table for File Storage
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:35:29 +09:00
Suguru Hirahara
ab1cce5a14
Update docs/container-images.md: create a table for Authentication
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:35:25 +09:00
Suguru Hirahara
f3fde12c45
Update docs/container-images.md: create tables for Clients and Server Components
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:35:20 +09:00
Suguru Hirahara
63e16ed034
Update docs/container-images.md: create a table for Homeserver
This is essentially an imitation of 59a01dabfc0b09b2ac3f8b81a8aecbe47b43bbde for container images. It copies the entries order and descriptions on the table of README.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 22:33:44 +09:00
Slavi Pantaleev
177e49ab47
Merge pull request #3717 from luixxiul/fix
Update docs/configuring-playbook-bridge-mautrix-meta-messenger.md: add a note about user ID of the new bridge's bot
2024-11-01 15:01:19 +02:00
Suguru Hirahara
8f7a723b37
Update docs/configuring-playbook-bridge-mautrix-meta-instagram.md: the same paragraph as docs/configuring-playbook-bridge-mautrix-meta-messenger.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 21:59:20 +09:00
Suguru Hirahara
f5e333b513
Update docs/configuring-playbook-bridge-mautrix-meta-messenger.md: add a note about user ID of the new bridge's bot
The user ID of the new bridge (mautrix-meta) is different from that of the old bridge (mautrix-facebook). It is slightly confusing, and the note should help migration.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 21:53:28 +09:00
Slavi Pantaleev
981a659159
Merge pull request #3716 from luixxiul/patch-1
Add labels to issue templates
2024-11-01 11:40:33 +02:00
Suguru Hirahara
289bf2909e
Add labels to issue templates
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 18:35:37 +09:00
Slavi Pantaleev
085587b103
Merge pull request #3715 from luixxiul/fix
Update documentation titles of deprecated or unmaintained services
2024-11-01 11:01:45 +02:00
Suguru Hirahara
0bc4ef8f4d
Update documentation titles of deprecated or unmaintained services
Also: fix typos

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 17:31:53 +09:00
Slavi Pantaleev
644fa5fdf7
Merge pull request #3714 from luixxiul/fix
Update docs/configuring-playbook-s3.md about object storage providers
2024-11-01 10:00:25 +02:00
Slavi Pantaleev
8a6b822bbd Always send /rendezvous routes to the same Synapse worker process (main) to fix QR code login
Related to https://github.com/matrix-org/matrix-spec-proposals/pull/4108
2024-11-01 09:52:41 +02:00
Suguru Hirahara
e9c5562ae7
Fix anchor links and its title of documents related to Amazon S3
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 16:37:41 +09:00
Suguru Hirahara
76099c8936
Update docs/configuring-playbook-s3.md about object storage providers
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 16:37:19 +09:00
Slavi Pantaleev
1be9944282
Merge pull request #3713 from luixxiul/fix
Update README.md: remove deprecated or unmaintained services from the supported services section
2024-11-01 09:18:04 +02:00
Slavi Pantaleev
8ef2671f2b Upgrade ntfy (v2.10.0-2 -> v2.11.0-0) 2024-11-01 08:51:08 +02:00
Suguru Hirahara
2bf31da947
Update README.md: remove deprecated or unmaintained services from the supported services section
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 15:47:36 +09:00
Slavi Pantaleev
477afec6d3
Merge pull request #3712 from luixxiul/fix
Update docs/container-images.md: add unlisted Docker images and create a section for container images of deprecated or unmaintained services
2024-11-01 08:39:08 +02:00
Suguru Hirahara
727609c7c8
Update docs/container-images.md: create a section for container images of deprecated or unmaintained services
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 15:07:25 +09:00
Suguru Hirahara
e35dae7fca
Update docs/container-images.md: add unlisted Docker images
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 15:07:18 +09:00
Slavi Pantaleev
ddf60ac45b
Merge pull request #3711 from luixxiul/fix
Update docs/configuring-playbook.md: add link to configuring-playbook-synapse-auto-accept-invite.md
2024-11-01 07:10:09 +02:00
Suguru Hirahara
4de16dde79
Update docs/configuring-playbook.md: add link to configuring-playbook-synapse-auto-accept-invite.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 11:24:19 +09:00
Slavi Pantaleev
0fdb4a652f
Merge pull request #3710 from luixxiul/fix
Add ddclient to documentation
2024-10-31 20:23:38 +02:00
Suguru Hirahara
bf0fa1408e
Add ddclient to documentation
- Update README.md
- Update docs/configuring-playbook-dynamic-dns.md: remove reference to deceased Google Domains etc.
- Update docs/configuring-playbook.md: move documentation to server connectivity section
- Update docs/container-images.md: add linuxserver/ddclient

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-11-01 02:58:14 +09:00
Suguru Hirahara
5ebdc0c48d
Add links to matrix-user-verification-service (#3709)
* Add links to matrix-user-verification-service

Matrix User Authentication Service itself has been available for Jitsi since 42e4e50f5be654b812939732114f0724865cdc78.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update README.md

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

* Update docs/container-images.md

* Update roles/custom/matrix-user-verification-service/defaults/main.yml

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-10-31 18:26:33 +02:00
Slavi Pantaleev
aa612348bb
Merge pull request #3708 from luixxiul/fix
Update README.md and docs/configuring-playbook.md: add other unlisted services / container images
2024-10-31 14:37:23 +02:00
Suguru Hirahara
8db65bb811
Update README.md: add link to configuring-playbook-appservice-draupnir-for-all.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 21:09:02 +09:00
Suguru Hirahara
d200e8d084
Update README.md and docs/configuring-playbook.md: add configuring-playbook-prometheus-nginxlog.md
Since nginx has been replaced with traefik, the documentation is getting irrelevant anyway.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 21:07:18 +09:00
Suguru Hirahara
0a8dd90b5e
Update README.md: add matrix-appservice-kakaotalk
matrix-appservice-kakaotalk itself was added to the playbook with e46ba5debaf34ee6abc5e09c0e19ff5c666edc85. It also does not provide its container image.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 21:06:59 +09:00
Slavi Pantaleev
cb0ea1b23e
Merge pull request #3707 from luixxiul/fix
Add several components to README.md and docs/container-images.md
2024-10-31 12:56:50 +02:00
Suguru Hirahara
950147bc99
Update README.md and docs/container-images.md: add matrix-wechat
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 19:39:16 +09:00
Suguru Hirahara
748c38de30
Update README.md and docs/container-images.md: add mautrix-wsproxy
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 19:39:11 +09:00
Suguru Hirahara
f41d432ab2
Update README.md and docs/container-images.md: add mautrix-meta
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 19:39:03 +09:00
Suguru Hirahara
bff4321fb1
Update README.md and docs/container-images.md: add Matrix Authentication Service
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 19:38:50 +09:00
Suguru Hirahara
f6991b2db9
Update README.md and docs/container-images.md: add matrix-alertmanager-receiver
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 19:36:55 +09:00
Suguru Hirahara
0b09ad3d76
Update documentation about Slack bridges (#3706)
* Update docs/configuring-playbook-bridge-hookshot.md: matrix-appservice-webhooks has been deprecated

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add notes that matrix-appservice-slack is not available for new installation

The bridge uses a classic Slack application, but its creation has been discontinued since June 4, 2024.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Remove reference to matrix-hookshot and matrix-appservice-webhooks

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 11:58:04 +02:00
Slavi Pantaleev
c20fcedd2c Detect and remove legacy Postmoogle service (matrix-bot-postmoogle.service)
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3698
2024-10-31 10:55:32 +02:00
Slavi Pantaleev
e26fea0289 Fix validation task (matrix_postmoogle_ -> matrix_bot_postmoogle_)
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3698
2024-10-31 10:44:35 +02:00
Slavi Pantaleev
2234fbbb8a Fix Postmoogle service name file to match what is being deployed
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3698
2024-10-31 10:36:39 +02:00
Suguru Hirahara
652feba9cc
Rename variables of Postmoogle to handle it as a bridge (#3698)
* Rename variables matrix_bot_postmoogle_* with matrix_postmoogle_*

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Rename file names and references to those files

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Move variables block for /matrix-bridge-postmoogle

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Rename matrix_playbook_bot_postmoogle_ to matrix_playbook_bridge_postmoogle_

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add matrix_playbook_migration_matrix_postmoogle_migration_validation_enabled

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Replace an install tag example with "-bot" prefix

The previous example seems to have been selected to show how components whose name contains "-bot-" needed to be specified.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-31 10:33:46 +02:00
Slavi Pantaleev
fd39392ec5
Merge pull request #3705 from aine-etke/patch-175241
synapse-admin: v0.10.3-etke26
2024-10-31 10:23:23 +02:00
Aine
15ce998146
synapse-admin: v0.10.3-etke26 2024-10-31 10:19:32 +02:00
Slavi Pantaleev
446e656424 Mark matrix_client_cinny_path_prefix as not supported anymore
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3701

We can restore support for it by making a non-/ path prefix trigger a
self-build with a modified build config, so that a Cinny version with
path-prefix support would be produced. Traefik label changes may also be
required.

For now, we're not doing all that work, but simply dropping support for path
prefixes for Cinny.
2024-10-30 09:53:03 +02:00
Slavi Pantaleev
c7d11b71c7
Merge pull request #3704 from spantaleev/renovate/docker.io-metio-matrix-alertmanager-receiver-2024.x
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.10.30
2024-10-30 09:24:05 +02:00
renovate[bot]
81831b550d
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.10.30 2024-10-30 06:22:57 +00:00
Slavi Pantaleev
1008362719
Merge pull request #3703 from spantaleev/renovate/ghcr.io-element-hq-synapse-1.x
Update ghcr.io/element-hq/synapse Docker tag to v1.118.0
2024-10-29 20:59:28 +02:00
Slavi Pantaleev
75c0e88ccd
Merge pull request #3702 from spantaleev/renovate/ghcr.io-etkecc-postmoogle-0.x
Update ghcr.io/etkecc/postmoogle Docker tag to v0.9.23
2024-10-29 20:58:19 +02:00
renovate[bot]
997e093793
Update ghcr.io/element-hq/synapse Docker tag to v1.118.0 2024-10-29 17:03:02 +00:00
renovate[bot]
e87e7e766d
Update ghcr.io/etkecc/postmoogle Docker tag to v0.9.23 2024-10-29 17:02:57 +00:00
Slavi Pantaleev
38838983d5
Merge pull request #3699 from spantaleev/renovate/etherpad-2.x
Update dependency etherpad to v2.2.6-0
2024-10-29 19:02:51 +02:00
Slavi Pantaleev
756bfbdc25
Merge pull request #3700 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.83
2024-10-29 19:02:33 +02:00
renovate[bot]
ad3f359746
Update vectorim/element-web Docker tag to v1.11.83 2024-10-29 10:22:40 +00:00
renovate[bot]
8e33aa6398
Update dependency etherpad to v2.2.6-0 2024-10-29 10:22:35 +00:00
Slavi Pantaleev
059cf13021 Add note about syn2mas not migrating user admin status flag
Related to https://github.com/element-hq/matrix-authentication-service/issues/3440
2024-10-29 09:59:05 +02:00
Slavi Pantaleev
2cd79e785f Mention matrix-reminder-bot incompatibility with Matrix Authentication Service 2024-10-29 09:41:21 +02:00
Slavi Pantaleev
304016982e Set matrix_bot_matrix_reminder_bot_docker_repo_version correctly if matrix_bot_matrix_reminder_bot_version is latest 2024-10-29 09:40:28 +02:00
Slavi Pantaleev
4dec2ff563
Merge pull request #3697 from luixxiul/fix
Update README.md and container-images.md: replace links to the original synapse-admin with ones to its fork
2024-10-28 17:09:24 +02:00
Suguru Hirahara
efa17d837c
Update README.md and container-images.md: replace links to the original synapse-admin with ones to its fork
The original synapse-admin (Awesome-Technologies/synapse-admin) was replaced with etke.cc/synapse-admin with 73d338d9d1e5347f0f299ee67ede751bd37ddb4c on Sep 12, 2024.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 23:58:05 +09:00
Suguru Hirahara
ecd4fc028d
Recategorize Postmoogle (#3696)
* Update configuring-playbook.md: move a link for docs/configuring-playbook-bot-postmoogle.md to Bots section

The document (on 9c2a8addee93910cb9079f856bc3fb3932592c91; initial commit to add Postmoogle) says:
> Postmoogle is a bot/bridge you can use to forward emails to Matrix rooms

Therefore it is not really incorrect to categorize Postmoogle as bridge document-wise, but since the list on README.md categorizes it as a bot, and based on the file name of the documentation, this commit moves the link for Postmoogle to the Bots section.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Revert "Update configuring-playbook.md: move a link for docs/configuring-playbook-bot-postmoogle.md to Bots section"

This reverts commit 1e2e903cb955fcf5033788c508816293b837e9f5.

* Change the file name of Postmoogle documentation to make it clear that Postmoogle is a bridge

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update documentation for Postmoogle related to a bridge/bot status

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 16:27:42 +02:00
Slavi Pantaleev
c110ba89b1
Merge pull request #3695 from luixxiul/fix
Update docs/container-images.md: replace URLs
2024-10-28 14:07:18 +02:00
Suguru Hirahara
7a791ab692
Update docs/container-images.md: replace matrixdotorg/synapse with its fork
The switch to element-hq/synapse was conducted with aa0a85b094190a5b9508058680becb3bbb83c7c6.

Since the fork no longer belongs to Matrix Foundation, it is not quite "official" anymore, while it is enabled by default and not optional.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 19:39:07 +09:00
Suguru Hirahara
409f4195c3
Update docs/container-images.md: replace URL to matrix-appservice-slack Docker image
We have used the officially maintained image since 8f41041f6db84a2b8b10ddd9e035c42d47962118 on Sep 15, 2020.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 19:36:25 +09:00
Slavi Pantaleev
ec4daa1d3a
Merge pull request #3694 from spantaleev/renovate/ghcr.io-etkecc-postmoogle-0.x
Update ghcr.io/etkecc/postmoogle Docker tag to v0.9.22
2024-10-28 12:20:19 +02:00
renovate[bot]
15ad4780d6
Update ghcr.io/etkecc/postmoogle Docker tag to v0.9.22 2024-10-28 10:11:29 +00:00
Slavi Pantaleev
4bf2477064
Merge pull request #3693 from luixxiul/fix
Create a section for deprecated, unmaintained, or removed services on docs/configuring-playbook.md
2024-10-28 12:11:08 +02:00
Suguru Hirahara
ef04f5b33f
Add disclaimer to the deprecated services section
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 18:18:35 +09:00
Suguru Hirahara
4bf0414555
Update docs/configuring-playbook.md: create "Deprecated / unmaintained / removed services" section
Create a dedicated section for deprecated, unmaintained, or removed services such as:

- Appservice Webhooks
- Dimension
- Go-NEB
- matrix-bot-chatgpt
- Mautrix Facebook
- Mautrix Hangouts
- Mautrix Instagram
- MX Puppet Skype

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 18:09:47 +09:00
Slavi Pantaleev
7c504d9d53
Merge pull request #3692 from luixxiul/fix
Update the URL to matrix-appservice-discord
2024-10-28 10:37:27 +02:00
Suguru Hirahara
ae864830e0
Update the URL to matrix-appservice-discord
The URL seems to have been changed at least since several years though the exact date is unknown to me, considering the latest tagged docker image on https://hub.docker.com/r/halfshot/matrix-appservice-discord/tags (https://hub.docker.com/layers/halfshot/matrix-appservice-discord/develop/images/sha256-a1015907545603448d2d8e2ea0d31f0fdb6c7676009e2cb38e324440a9284317) is dated Feb 15, 2021.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 17:18:03 +09:00
Slavi Pantaleev
a1c01cda5f
Merge pull request #3691 from luixxiul/fix
Replace existing links to matrix-org/synapse which should be replaced
2024-10-28 09:52:45 +02:00
Suguru Hirahara
6e4ad586e4
Replace existing links to matrix-org/synapse which should be replaced
Note that links to the issues and PRs on the original repository (matrix-org/synapse) should not be replaced with ones on the forked one (element-hq/synapse) as those are not available on the latter, where the issues and PRs with the same number as matrix-org/synapse are "reserved" to avoid conflicts between those repositories. For reasoning of such complexity (including the reason why trasferring the original repository to element-hq/synapse was avoided), see: https://github.com/element-hq/synapse/issues/6#issuecomment-1861116896

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 16:43:35 +09:00
Slavi Pantaleev
7e0b5753d7
Merge pull request #3690 from luixxiul/fix
Update deprecation notices on documentation
2024-10-28 09:34:31 +02:00
Suguru Hirahara
9cfb8c8c67
Update docs/configuring-playbook-bot-go-neb.md
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-10-28 16:34:20 +09:00
Suguru Hirahara
17ccd95734
Update docs/configuring-playbook-bot-chatgpt.md
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-10-28 16:33:35 +09:00
Suguru Hirahara
379a8677ba
Fix anchor links to matrix-hookshot
The namaspace has been replaced with 58771a9c65bb59bdf0d29301d59d05c1a50fea02 on Mar 3, 2022.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 16:23:12 +09:00
Suguru Hirahara
9bd1e3e791
Update deprecation notices on documentation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 16:22:35 +09:00
Suguru Hirahara
0cd7404074
Update docs/configuring-playbook-bot-go-neb.md: add deprecation notice
Go-NEB has been discontinued since Jun 29, 2023. See: 3ba3d4600f

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 16:21:45 +09:00
Slavi Pantaleev
dc461004b4
Merge pull request #3689 from luixxiul/fix
Update documentation regarding beeper forks
2024-10-28 08:58:48 +02:00
Slavi Pantaleev
560ebd0ae6 Make /tmp for maubot writable 2024-10-28 08:55:55 +02:00
Suguru Hirahara
afb538610d
Update documentation regarding mx-puppet-discord
The transition to the Beeper fork (https://gitlab.com/beeper/mx-puppet-monorepo) has been reverted with 3f45805fd2b3b05cd1f3893767d9f25b0760ad3a on May 7, 2022 after https://github.com/matrix-discord/mx-puppet-discord was archived on Apr 17, 2022 and migrated to https://gitlab.com/mx-puppet/discord/mx-puppet-discord.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 11:53:16 +09:00
Suguru Hirahara
85ccd143ac
Update documentation regarding mx-puppet-slack
The transition to the Beeper fork (https://gitlab.com/beeper/mx-puppet-monorepo) has been reverted with 894669eca2092351e6105ef7beba981d96419b5e on May 15, 2022, after https://github.com/Sorunome/mx-puppet-slack was archived on Apr 19, 2022 and migrated to https://gitlab.com/mx-puppet/slack/mx-puppet-slack.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 11:52:45 +09:00
Slavi Pantaleev
d1c7f7eef1
Merge pull request #3685 from luixxiul/fix
Fix more capitalizations on documentation
2024-10-27 22:25:19 +02:00
Suguru Hirahara
2e343b44ea
Fix capitalization: Container Images → Container images 2024-10-28 04:00:59 +09:00
Suguru Hirahara
2d36bf17d5
Fix capitalization: heisenbridge → Heisenbridge
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 04:00:51 +09:00
Suguru Hirahara
e77b14a699
Fix capitalization: cinny → Cinny
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 04:00:45 +09:00
Suguru Hirahara
b71c4a1a3e
Consistent capitalization: honoroit → Honoroit
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 04:00:38 +09:00
Suguru Hirahara
601406ddda
Fix capitalization: buscarron → Buscarron
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-28 04:00:30 +09:00
Slavi Pantaleev
a74bd65d56
Merge pull request #3682 from luixxiul/fix
Synchronize document titles and links based on configuring-playbook.md
2024-10-27 20:39:56 +02:00
Suguru Hirahara
3d47e0d69c
Synchronize document titles and links based on configuring-playbook.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-26 21:28:31 +09:00
Slavi Pantaleev
f9e37fc614 Adjust step number on alertmanager-receiver docs page 2024-10-26 10:32:22 +03:00
Slavi Pantaleev
b63d8a5687
Merge pull request #3680 from luixxiul/fix
Update docs/configuring-playbook-s3-goofys.md
2024-10-25 13:17:29 +03:00
Suguru Hirahara
1c0ba91a47
Update docs/configuring-playbook-s3-goofys.md: fix the referred step number
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-25 19:07:20 +09:00
Suguru Hirahara
cbdf619bd4
Update docs/configuring-playbook-s3-goofys.md: remove repetitive suggestions to create a backup
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-25 19:07:08 +09:00
Suguru Hirahara
1b117f1757
Update docs/configuring-playbook-s3-goofys.md: update Table of Contents
It is a legacy of docs/configuring-playbook-s3.md on ac7cb3619dfe522af280875566e859007f7a0374, and the upper levels of those two list items are redundant.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-25 19:06:33 +09:00
Suguru Hirahara
91cf8e3230
Update docs/configuring-playbook-s3-goofys.md: fix the anchor link for Backblaze B2
The link has been broken since ac7cb3619dfe522af280875566e859007f7a0374

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-25 19:05:32 +09:00
Slavi Pantaleev
65db73e808
Merge pull request #3679 from luixxiul/fix
Fix indentations of list items
2024-10-25 12:15:43 +03:00
Suguru Hirahara
082b75b0c0
Fix indentations of list items
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-25 17:15:10 +09:00
Slavi Pantaleev
fd43ed9a46
Merge pull request #3678 from luixxiul/fix
Update docs/configuring-playbook-bridge-appservice-discord.md
2024-10-25 11:07:38 +03:00
Suguru Hirahara
54e84c5c73
Update docs/configuring-playbook-bridge-appservice-discord.md
Fix a typo

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-25 16:27:18 +09:00
Slavi Pantaleev
f4c4930215 Fix some anchors on the MAS docs page 2024-10-25 09:37:03 +03:00
Slavi Pantaleev
17a20dca1e Make it more obvious that the Synapse OIDC config needs to go when using MAS 2024-10-25 09:34:41 +03:00
Slavi Pantaleev
dd29a85afe
Merge pull request #3676 from luixxiul/fix
Fix the title of docs/configuring-playbook-traefik.md
2024-10-25 09:18:43 +03:00
Slavi Pantaleev
5dfd023a50
Merge pull request #3675 from aine-etke/patch-51415
Update configuring-playbook-synapse-admin.md - add community room link
2024-10-24 19:40:58 +03:00
Suguru Hirahara
3e3ac11780
Fix the title of docs/configuring-playbook-traefik.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-24 20:24:47 +09:00
Aine
823a911361
Update configuring-playbook-synapse-admin.md - add community room link 2024-10-24 14:14:17 +03:00
Slavi Pantaleev
2c735ab9ab
Merge pull request #3674 from luixxiul/fix
Fix capitalization: Sliding Sync proxy, rageshake
2024-10-24 12:15:47 +03:00
Suguru Hirahara
6dff60e7a4
Fix capitalization: Rageshake → rageshake
Based on https://github.com/matrix-org/rageshake

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-24 18:02:19 +09:00
Suguru Hirahara
70e4320eda
Fix capitalization: Sliding Sync Proxy → Sliding Sync proxy
Based on MSC3575

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-24 18:02:08 +09:00
Slavi Pantaleev
4bc11adb7f
Merge pull request #3673 from luixxiul/fix
Consistent usage of the words related to BorgBackup (Borg)
2024-10-24 10:36:20 +03:00
Suguru Hirahara
9f372d9058
Consistent usage of the words related to BorgBackup (Borg)
In order to avoid confusions between the name of the program itself (BorgBackup and Borg in short) and the backups managed by BorgBackup, the official full name should be preferred where possible, minding capitalization.

- Borg or borg → BorgBackup
- Borg backup(s) → BorgBackup (if it means the program) / backups with BorgBackup (if it means the backups managed by the program)

Based on https://www.borgbackup.org/

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-24 16:30:00 +09:00
Slavi Pantaleev
9966124531
Merge pull request #3672 from luixxiul/fix
docs/configuring-playbook-mautrix-bridges.md: fix periods
2024-10-24 09:44:41 +03:00
Suguru Hirahara
4bdbbd9e94
docs/configuring-playbook-mautrix-bridges.md: fix periods
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-24 15:33:57 +09:00
Slavi Pantaleev
36a271c154
Merge pull request #3671 from luixxiul/fix
Fix capitalization: Dimension Integration Manager → Dimension integration manager
2024-10-24 09:29:55 +03:00
Suguru Hirahara
a2790d11d5
Fix capitalization: Dimension Integration Manager → Dimension integration manager
Based on https://github.com/turt2live/matrix-dimension
> An open source integration manager for matrix clients, like Element.

"Dimension" is one of the integration managers, and it is not something like Dimension Integration Manager, which could be abbreviated as DIM.

Also:
- Replace "integrations manager" with "integration manager"
- Fix typos
- Remove a line break

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-24 12:58:34 +09:00
Slavi Pantaleev
b3fa074d67
Merge pull request #3667 from luixxiul/fix
Edit line breaks in sentences and paragraphs
2024-10-23 21:08:09 +03:00
Slavi Pantaleev
c612ca4a09
Merge pull request #3670 from aine-etke/patch-769268
synapse-admin v0.10.3-etke25: fix room state events display
2024-10-23 15:19:49 +03:00
Aine
b30823745c
synapse-admin v0.10.3-etke25: fix room state events display 2024-10-23 13:50:00 +03:00
Slavi Pantaleev
ef4c3f78b6
Merge pull request #3669 from spantaleev/renovate/docker.io-metio-matrix-alertmanager-receiver-2024.x
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.10.23
2024-10-23 09:45:22 +03:00
renovate[bot]
0751bdcd39
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.10.23 2024-10-23 06:39:59 +00:00
Slavi Pantaleev
be9dfdc881
Merge pull request #3668 from aine-etke/patch-597263
synapse-admin v0.10.3-etke24: enable visual customization
2024-10-23 07:36:34 +03:00
Aine
b35a4293d1
synapse-admin v0.10.3-etke24: enable visual customization 2024-10-23 00:07:40 +03:00
Suguru Hirahara
6995f3990e
Edit line breaks in sentences and paragraphs
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-23 01:13:23 +09:00
Slavi Pantaleev
ede9612b0b
Merge pull request #3666 from adam-kress/master
Upgrade Jitsi (v9753-0 -> v9779-0)
2024-10-22 17:05:38 +03:00
Slavi Pantaleev
a367eaa85d
Merge pull request #3665 from luixxiul/fix
Update docs/configuring-playbook-bridge-appservice-slack.md: fix indentation
2024-10-22 16:56:12 +03:00
adam-kress
3d9e51fa75
Upgrade Jitsi (v9753-0 -> v9779-0) 2024-10-22 09:50:09 -04:00
Suguru Hirahara
2f24299597
Update docs/configuring-playbook-bridge-appservice-slack.md: fix indentation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-22 22:41:50 +09:00
Slavi Pantaleev
66de3412a5
Merge pull request #3664 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.82
2024-10-22 16:22:53 +03:00
renovate[bot]
94fbad4102
Update vectorim/element-web Docker tag to v1.11.82 2024-10-22 13:15:05 +00:00
Slavi Pantaleev
d29ef41715
Merge pull request #3663 from luixxiul/fix
Update docs/configuring-playbook-bridge-mautrix-discord.md and docs/configuring-playbook-bridge-mautrix-facebook.md
2024-10-22 16:14:16 +03:00
Suguru Hirahara
a124461ba6
Update docs/configuring-playbook-bridge-mautrix-discord.md and docs/configuring-playbook-bridge-mautrix-facebook.md
- Fix listing: docs/configuring-playbook-bridge-mautrix-discord.md
- Add parentheses: docs/configuring-playbook-bridge-mautrix-facebook.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-22 21:59:38 +09:00
Slavi Pantaleev
58a9eb511f
Merge pull request #3662 from luixxiul/fix
Update docs/configuring-playbook-bot-postmoogle.md
2024-10-22 14:47:35 +03:00
Suguru Hirahara
aa7a3b477a
Update docs/configuring-playbook-bot-postmoogle.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-22 20:35:43 +09:00
Slavi Pantaleev
d1d09f7e08
Merge pull request #3661 from luixxiul/fix
Remove the "installation is disabled by default" from documentation files
2024-10-22 13:29:45 +03:00
Suguru Hirahara
917a631984
Remove the "installation is disabled by default" from documentation files
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-22 19:19:34 +09:00
Slavi Pantaleev
163b79e877
Merge pull request #3660 from aine-etke/patch-741451
synapse-admin v0.10.3-etke23: user profile in the top menu
2024-10-22 12:48:57 +03:00
Aine
14bd58769c
synapse-admin v0.10.3-etke23: user profile in the top menu 2024-10-22 12:23:16 +03:00
Slavi Pantaleev
7a5a75ed03 Add a MAS note about the lack of encrypted appservices support
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3658

Well, it's not a fix for "encrypted" Hookshot failing to work together with MAS, but..
It's not really an issue we can do anything about.
2024-10-22 10:15:21 +03:00
Slavi Pantaleev
489c91f51f
Merge pull request #3657 from aine-etke/synapse-admin-etke22
synapse-admin v0.10.3-etke22
2024-10-22 08:19:38 +03:00
Slavi Pantaleev
66e2ef1f17
Merge pull request #3592 from ilterugur/patch-1
Update configuring-playbook-synapse-admin.md
2024-10-22 08:18:34 +03:00
Aine
ffa5484cc3
synapse-admin v0.10.3-etke22 2024-10-21 23:58:05 +03:00
Slavi Pantaleev
c5e6873e4b
Merge pull request #3655 from luixxiul/fix
Update docs/registering-users.md: use common expressions for playbook configuration and installation
2024-10-21 18:09:04 +03:00
Suguru Hirahara
cfed646149
Update docs/registering-users.md: use common expressions for playbook configuration and installation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-22 00:01:46 +09:00
Slavi Pantaleev
9141274f59
Merge pull request #3653 from luixxiul/fix
Update room IDs and alias with ones on the Matrix Specification
2024-10-21 16:22:17 +03:00
Suguru Hirahara
159daa7466
Use a room alias on Matrix Specification
"#matrix:example.org" is used as an example of a room alias on https://spec.matrix.org/v1.12/#room-aliases

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 22:00:32 +09:00
Suguru Hirahara
da07b302fa
Replace !anotherRoom with !aaabaa
!aaabaa is used as an example of a room ID on https://spec.matrix.org/v1.12/#room-aliases

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:48:46 +09:00
Suguru Hirahara
5fc2e2f1f9
Replace !anotherroom with !anotherRoom
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:48:29 +09:00
Suguru Hirahara
0593edbb1a
Replace !example:example.org and !example:example.com with !qporfwt:example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:48:09 +09:00
Suguru Hirahara
aaa6335053
Replace !someRoom with !qporfwt
!qporfwt is used as an example of a room ID on https://spec.matrix.org/v1.12/#room-structure

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:47:52 +09:00
Suguru Hirahara
1e8030810f
Update internal room ID: !someRoom
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:47:02 +09:00
Suguru Hirahara
d152bbcd0c
Replace :matrix.org with :example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:43:02 +09:00
Suguru Hirahara
65967dd52e
Replace :SERVER with :example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:42:56 +09:00
Suguru Hirahara
ec1b18cf6e
Fix internal room ID: id → example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:42:35 +09:00
Suguru Hirahara
ebd4463654
Fix internal room ID: room.id → example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 21:42:06 +09:00
Slavi Pantaleev
a7ab6e74f8
Merge pull request #3652 from luixxiul/fix
Update docs/configuring-dns: fix an incorrect anchor link
2024-10-21 14:56:34 +03:00
Suguru Hirahara
81a4ef54aa
Update docs/configuring-dns: fix an incorrect anchor link
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 20:45:02 +09:00
Slavi Pantaleev
7b35beb843 Get rid of some double spaces 2024-10-21 14:31:53 +03:00
Slavi Pantaleev
2a73ea4ae5
Merge pull request #3650 from aine-etke/patch-792975
do not create MAS DB if MAS is disabled
2024-10-21 14:29:49 +03:00
Slavi Pantaleev
17f98f005e Upgrade Hydrogen (v0.5.0 -> v0.5.1) 2024-10-21 14:29:04 +03:00
Slavi Pantaleev
a897841f9b Add missing usage of matrix_authentication_service_syn2mas_process_extra_arguments when constructing matrix_authentication_service_syn2mas_migration_command 2024-10-21 14:26:41 +03:00
Aine
b9ca98d1e3
do not create MAS DB if MAS is disabled 2024-10-21 13:54:38 +03:00
Slavi Pantaleev
802230a0ef
Merge pull request #3649 from luixxiul/fix
Update docs/configuring-playbook-bridge-heisenbridge.md: matrix_heisenbridge_owner domain and usage
2024-10-21 11:59:19 +03:00
Suguru Hirahara
70411706a9
Update docs/configuring-playbook-bridge-heisenbridge.md: matrix_heisenbridge_owner domain and usage
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 17:52:57 +09:00
Slavi Pantaleev
8f1262b596 Add matrix_authentication_service_syn2mas_process_extra_arguments to allow for --upstreamProviderMapping to be used with syn2mas
This makes it possible to migrate from Synapse when OIDC had been used
and the Synapse user database contains OIDC-sourced users.
2024-10-21 11:34:05 +03:00
Slavi Pantaleev
2afaeef6e3
Merge pull request #3648 from luixxiul/fix
Replace the default hostnames with others on documentation files for components about adjusting the service URL
2024-10-21 11:07:00 +03:00
Suguru Hirahara
fce459d04c
Replace the default hostnames with others on documentation files for components about adjusting the service URL
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 17:02:33 +09:00
Slavi Pantaleev
5431a34c69 Document matrix-user-creator suppression during MAS migration
Related to 3d7a926c1993927054717eff56dc23b076206757

Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3647
2024-10-21 10:57:05 +03:00
Slavi Pantaleev
44682a9e0f Disable automatic user creation when MAS migration is in progress
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3647
2024-10-21 10:52:28 +03:00
Slavi Pantaleev
3d7a926c19
Merge pull request #3646 from luixxiul/fix
Update documentation for components about adjusting the URL and the DNS records
2024-10-21 10:07:34 +03:00
Slavi Pantaleev
8f2e9e03a2 Use raw/endraw around templated strings in matrix_authentication_service_config_upstream_oauth2_providers sample config
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3645
2024-10-21 09:13:14 +03:00
Suguru Hirahara
a6fa33e16c
Update docs/configuring-playbook-alertmanager-receiver.md: fix anchor links
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 14:17:33 +09:00
Suguru Hirahara
e8c61b0a3c
Update lines for installing instruction: add anchor link to "adjusting DNS records" header
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 14:17:29 +09:00
Suguru Hirahara
c892971e89
Update documentation for components which do not require subdomain settings by default
This adopts the structure of docs/configuring-playbook-matrix-authentication-service.md which was recently created.

- …
- Adjusting the playbook configuration
  - …
  - Adjusting the (service name here) URL
  - …
- Adjusting DNS records
- Installing
- …

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 14:17:24 +09:00
Suguru Hirahara
ea6e879487
Update docs/configuring-dns.md: add an entry for Rageshake
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 14:17:18 +09:00
Suguru Hirahara
81d7698944
Update documentation for components which require subdomain settings by default
This adopts the structure of docs/configuring-playbook-matrix-authentication-service.md which was recently created.

- …
- Adjusting the playbook configuration
  - …
  - Adjusting the (service name here) URL
  - …
- Adjusting DNS records
- Installing
- …

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-21 14:11:28 +09:00
Slavi Pantaleev
a3d47c5581
Merge pull request #3642 from luixxiul/fix
Add detail about setting up schildichat subdomain on docs/configuring-dns.md
2024-10-19 20:23:48 +03:00
Suguru Hirahara
3e95e6d2f6
Add detail about setting up schildichat subdomain on docs/configuring-dns.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-20 02:13:06 +09:00
Slavi Pantaleev
3ddb1096d4
Merge pull request #3641 from luixxiul/fix
Update docs/configuring-playbook-conduit.md and docs/configuring-playbook-dendrite.md
2024-10-19 18:11:49 +03:00
Suguru Hirahara
e3e16259c0
Update docs/configuring-playbook-conduit.md and docs/configuring-playbook-dendrite.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 23:09:38 +09:00
Slavi Pantaleev
9a8fd04432
Merge pull request #3640 from luixxiul/fix
Fix list numbering
2024-10-19 15:49:36 +03:00
Suguru Hirahara
398f4bbea5
Fix list numbering
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 21:34:00 +09:00
Slavi Pantaleev
abbe7818e2 Fix broken link in changelog entry 2024-10-19 14:57:43 +03:00
Slavi Pantaleev
7139431d46 Make ansible-lint happy 2024-10-19 14:50:21 +03:00
Slavi Pantaleev
8f16524789 Add support for Matrix Authentication Service
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3108

Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3562
2024-10-19 14:43:34 +03:00
Slavi Pantaleev
8bdc8fd037
Merge pull request #3639 from luixxiul/fix
Update docs/configuring-playbook-cactus-comments.md: fix the example domain
2024-10-19 14:30:12 +03:00
Suguru Hirahara
c1cffe70ed
Update docs/configuring-playbook-cactus-comments.md: fix the example domain
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 20:22:13 +09:00
Slavi Pantaleev
0a675d3d91
Merge pull request #3638 from luixxiul/fix
Update docs/configuring-playbook-cactus-comments.md
2024-10-19 14:01:12 +03:00
Suguru Hirahara
95f541b86c
Update docs/configuring-playbook-cactus-comments.md: add a section for embedding Cactus Comments
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 19:37:09 +09:00
Suguru Hirahara
015ad80e62
Update docs/configuring-playbook-cactus-comments.md: use the common expression for configuration
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 19:26:44 +09:00
Slavi Pantaleev
f91b716af3 Minor improvements to configuring-playbook-email.md 2024-10-19 12:28:03 +03:00
Slavi Pantaleev
9ef365424a
Merge pull request #3637 from luixxiul/fix
Update docs/configuring-playbook-client-*: line breaks
2024-10-19 12:14:18 +03:00
Suguru Hirahara
c33a4225ba
Update docs/configuring-playbook-client-*: line breaks
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 16:56:36 +09:00
Slavi Pantaleev
8caaf2243c
Merge pull request #3636 from luixxiul/fix
Update `roles/custom/matrix-bridge-mx-puppet-*`
2024-10-19 09:35:07 +03:00
Suguru Hirahara
d8a638f518
Update roles/custom/matrix-bridge-mx-puppet-*: fix domain names and use same comments
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 14:03:44 +09:00
Slavi Pantaleev
09776ccd05
Merge pull request #3635 from luixxiul/fix
Replace "Installation" with "Installing" on documentation
2024-10-19 07:39:54 +03:00
Suguru Hirahara
a933bdde75
Replace "Installation" with "Installing" on documentation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 12:22:25 +09:00
Slavi Pantaleev
e9998eaf87
Merge pull request #3634 from ginta1337/docs-own-ssl-certs-fix
Clarify documentation about own ssl certificate setup
2024-10-18 21:44:03 +03:00
Slavi Pantaleev
4e5be2fe83
Merge pull request #3633 from luixxiul/fix
Update docs/configuring-playbook-bridge-mx* - remove line breaks inside a sentence
2024-10-18 21:40:39 +03:00
Suguru Hirahara
4db1d6f874
Update docs/configuring-playbook-bridge-mx* - remove line breaks inside a sentence
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-19 03:29:46 +09:00
ginta1337
7f7d19378c Clarify documentation about own ssl certificate setup 2024-10-18 21:28:50 +03:00
Slavi Pantaleev
35bef61226 Upgrade prometheus-node-exporter (v1.8.2-1 -> v1.8.2-2) 2024-10-18 21:27:29 +03:00
Slavi Pantaleev
08b29e9b92 Replace some docker references with {{ devture_systemd_docker_base_host_command_docker }} 2024-10-18 21:14:04 +03:00
Slavi Pantaleev
e7128055f7 Minor improvements to the baibot role 2024-10-18 21:00:19 +03:00
Slavi Pantaleev
e524d218df
Merge pull request #3632 from luixxiul/fix
Fix capitalization: matrix → Matrix
2024-10-18 20:38:05 +03:00
Suguru Hirahara
55fcaac1f1
Fix capitalization: matrix → Matrix
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 23:35:10 +09:00
Slavi Pantaleev
08a569b0e6
Merge pull request #3630 from luixxiul/fix
Update docs/configuring-playbook.md
2024-10-18 15:44:54 +03:00
Suguru Hirahara
fa1d92f85d
Update docs/configuring-playbook.md
- Mention "base domain"
- Fix list numbering
- Add a blank line

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 21:30:58 +09:00
Slavi Pantaleev
e27fb2e206
Merge pull request #3628 from luixxiul/fix
Adopt special-use domain names for documentation purpose
2024-10-18 14:57:54 +03:00
Suguru Hirahara
49f7fd96c9
Fix docs/configuring-well-known.md and add a comment
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 17:01:37 +09:00
Suguru Hirahara
26503464c6
Update examples/vars.yml: update a comment to sync with roles/custom/matrix-base/defaults/main.yml
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 16:36:25 +09:00
Slavi Pantaleev
3f15fd49ed
Merge pull request #3629 from aine-etke/patch-721729
synapse-admin v0.10.3-etke21: fix 'Sign in' button disabled on SSO-only servers when attempting access token login
2024-10-18 10:27:02 +03:00
Aine
d564124af7
synapse-admin v0.10.3-etke21: fix 'Sign in' button disabled on SSO-only servers when attempting access token login 2024-10-18 10:25:53 +03:00
Suguru Hirahara
d997ac6e34
Update docs/configuring-playbook-traefik.md: fix the incorrect hostname
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 16:23:31 +09:00
Suguru Hirahara
2b102851e2
Update docs/configuring-playbook-traefik.md: use a different hostname
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 16:22:10 +09:00
Suguru Hirahara
309b91163a
Update docs/configuring-playbook-email.md: fix default email sender specified by exim_relay_sender_address
exim_relay_sender_address consists of exim_relay_hostname, which by default is equal to matrix_server_fqn_matrix, whose default value is matrix.example.com

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 16:15:09 +09:00
Suguru Hirahara
4a375be6a8
Replace matrix.domain with matrix.example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 12:15:53 +09:00
Suguru Hirahara
54f7dd587a
Replace second-example.com and third-example.com with example.net and example.org, respectively
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:03:27 +09:00
Suguru Hirahara
b392b544da
Replace another.com with example.net
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:03:23 +09:00
Suguru Hirahara
c73800b6bc
Replace matrix-example.com-media-store with matrix-example-media-store
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:03:18 +09:00
Suguru Hirahara
951cdba49b
Replace <server-name> with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:03:14 +09:00
Suguru Hirahara
7aab3a4f83
Replace <host> with matrix.example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:03:08 +09:00
Suguru Hirahara
5153c9a6c4
Replace <domain-name> with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:03:04 +09:00
Suguru Hirahara
28c28e1e00
Replace <domain> with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:59 +09:00
Suguru Hirahara
e42e8aaf83
Replace <your-domain-name> with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:54 +09:00
Suguru Hirahara
6c4eeda748
Replace example.example.com with matrix.example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:50 +09:00
Suguru Hirahara
9089963fa8
Replace server.com with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:45 +09:00
Suguru Hirahara
ee55138f57
Replace your-homeserver.com with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:41 +09:00
Suguru Hirahara
ff4155e033
Replace yourserver.com with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:31 +09:00
Suguru Hirahara
3fb2752714
Replace (your.)server.name with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:27 +09:00
Suguru Hirahara
1c5a8871d5
Replace <your-domain> with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:22 +09:00
Suguru Hirahara
faa441029c
Replace <matrix-domain> with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:18 +09:00
Suguru Hirahara
d45657df70
Replace YOUR_BARE_DOMAIN_NAME_HERE with example.com
Remove an explanation about example as it is self-explanatory

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:13 +09:00
Suguru Hirahara
f9cff0ff47
Replace MY.example.com with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:09 +09:00
Suguru Hirahara
90cfdabb2b
Replace DOMAIN with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 04:02:02 +09:00
Slavi Pantaleev
661974aba4
Merge pull request #3626 from aine-etke/patch-272522
synapse-admin v0.10.3-etke20: access token login
2024-10-17 19:18:44 +03:00
Aine
f6e118bb4c
synapse-admin v0.10.3-etke20: access token login 2024-10-17 18:35:58 +03:00
Suguru Hirahara
95ab7fabd0
Edit user identifier example: example.com → {{ matrix_domain }}
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:30:41 +09:00
Suguru Hirahara
02e0c2c3e0
Edit user identifier example: DOMAIN → {{ matrix_domain }}
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:30:03 +09:00
Suguru Hirahara
fe238474a5
Replace matrix-homeserver-domain with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:29:50 +09:00
Suguru Hirahara
b2d840482a
Replace domain names on roles/custom/matrix-bot-matrix-reminder-bot/templates/config.yaml.j2
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:29:23 +09:00
Suguru Hirahara
d218e93155
Replace example.tld with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:29:05 +09:00
Suguru Hirahara
288a711af6
Replace domain.tld with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:28:47 +09:00
Suguru Hirahara
ef8cf740a1
Replace mydomain.tld with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:28:24 +09:00
Suguru Hirahara
e54d66053c
Replace <domain.name> with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:28:14 +09:00
Suguru Hirahara
532babc55b
Replace yourdomain.com with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:28:02 +09:00
Suguru Hirahara
c02aba2724
Replace mydomain.com with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:27:40 +09:00
Suguru Hirahara
7779b747ea
Edit user identifier example (domain.com → example.com)
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:27:18 +09:00
Suguru Hirahara
59dd889671
Replace <example.com> with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:26:47 +09:00
Suguru Hirahara
0261e247e3
Replace YOUR_DOMAIN with example.com
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-18 00:26:23 +09:00
Slavi Pantaleev
15bc91244a Fix typo in variable name
Regression since bfc5374fc84d430414ef9b40b050954e390cc0fe
2024-10-17 17:10:50 +03:00
Slavi Pantaleev
bfc5374fc8 Upgrade mautrix-whatsapp (v0.10.9 -> v0.11.0) (bridgev2) and adapt configuration
Related to:
- https://github.com/mautrix/whatsapp/releases/tag/v0.11.0
- https://mau.fi/blog/2024-10-mautrix-release/
- https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3615
2024-10-17 16:23:13 +03:00
Slavi Pantaleev
12ed373d00
Merge pull request #3624 from luixxiul/fix
Add minor updates to documentation
2024-10-17 14:53:52 +03:00
Suguru Hirahara
0eb53a0e77
Update docs/configuring-playbook-cactus-comments.md: add line breaks
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 20:40:52 +09:00
Suguru Hirahara
0b688eb949
Update docs/configuring-playbook-external-postgres.md: minor changes
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 20:33:48 +09:00
Suguru Hirahara
bf8bbdd5ba
Remove whitespace characters from the comment block
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 20:32:46 +09:00
Slavi Pantaleev
235a1c1644
Merge pull request #3623 from luixxiul/fix
Update Email2Matrix documentation and its default configuration file
2024-10-17 14:26:58 +03:00
Suguru Hirahara
e961e1b43d
Update Email2Matrix documentation and its default configuration file
- Sync list of mailbox to Matrix mappings
- Add explanation for each variable

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 20:23:15 +09:00
Slavi Pantaleev
cd8b969a77
Merge pull request #3622 from luixxiul/fix
Move colons outside of asterisks
2024-10-17 13:12:38 +03:00
Suguru Hirahara
b9ba9a8ba3
Move colons outside of asterisks
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 18:29:47 +09:00
Slavi Pantaleev
9be0bd50ec
Merge pull request #3621 from luixxiul/fix
Use a common expression to suggest to skip the document
2024-10-17 12:20:20 +03:00
Suguru Hirahara
b7b2fe7fed
Use a common expression to suggest to skip the document
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 18:10:24 +09:00
Slavi Pantaleev
22f527ad1a
Merge pull request #3620 from luixxiul/fix
Update docs/configuring-playbook-bot-postmoogle.md: add "bots" to the comment
2024-10-17 10:58:34 +03:00
Suguru Hirahara
3d7cef0490
Update docs/configuring-playbook-bot-postmoogle.md: add "bots" to the comment
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 15:22:17 +09:00
Slavi Pantaleev
57e2fb291d
Merge pull request #3619 from luixxiul/fix
Update docs/configuring-playbook-external-postgres.md: remove a duplicate sentence
2024-10-17 09:14:04 +03:00
Suguru Hirahara
a874d5f918
Update docs/configuring-playbook-external-postgres.md: remove a duplicate sentence
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 15:01:43 +09:00
Slavi Pantaleev
72f31faac0
Merge pull request #3618 from luixxiul/fix
Use a common expression for password setting
2024-10-17 08:47:36 +03:00
Suguru Hirahara
9b76a86daf
Use a common expression for password setting
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 14:22:45 +09:00
Slavi Pantaleev
fa7be54bac
Merge pull request #3617 from luixxiul/fix
Use a common expression for suggesting to uncomment and adjust configuration
2024-10-16 22:58:16 +03:00
Suguru Hirahara
9ff0a5c34f
Use a common expression for suggesting to uncomment and adjust configuration
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 03:53:43 +09:00
Slavi Pantaleev
9f0edc628d
Merge pull request #3616 from luixxiul/fix
Update docs/configuring-playbook-etherpad.md
2024-10-16 20:39:05 +03:00
Suguru Hirahara
844d8ef4c3
Fix capitalization: etherpad → Etherpad
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 02:25:35 +09:00
Suguru Hirahara
fbd4a48709
Update docs/configuring-playbook-etherpad.md: add line breaks
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 02:25:26 +09:00
Suguru Hirahara
2f9403baee
Update docs/configuring-playbook-etherpad.md: edit comment block for configuration
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-17 02:24:42 +09:00
Slavi Pantaleev
d9227a98e5 Merge pull request #3613 from spantaleev/renovate/dock.mau.dev-mautrix-slack-0.x
Update dock.mau.dev/mautrix/slack Docker tag to v0.1.2
2024-10-16 20:12:48 +03:00
Slavi Pantaleev
62292ee7e7 Merge pull request #3612 from spantaleev/renovate/dock.mau.dev-mautrix-meta-0.x
Update dock.mau.dev/mautrix/meta Docker tag to v0.4.1
2024-10-16 20:12:33 +03:00
Slavi Pantaleev
c4a6a7002e
Merge pull request #3614 from spantaleev/renovate/dock.mau.dev-mautrix-signal-0.x
Update dock.mau.dev/mautrix/signal Docker tag to v0.7.2
2024-10-16 19:36:30 +03:00
renovate[bot]
c400b87c79
Update dock.mau.dev/mautrix/signal Docker tag to v0.7.2 2024-10-16 16:13:07 +00:00
renovate[bot]
a049859343
Update dock.mau.dev/mautrix/slack Docker tag to v0.1.2 2024-10-16 14:09:59 +00:00
renovate[bot]
66c60d5691
Update dock.mau.dev/mautrix/meta Docker tag to v0.4.1 2024-10-16 14:09:54 +00:00
Slavi Pantaleev
c60301a669
Merge pull request #3609 from spantaleev/renovate/docker.io-metio-matrix-alertmanager-receiver-2024.x
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.10.16
2024-10-16 14:31:31 +03:00
Slavi Pantaleev
4e38a3712b
Merge pull request #3611 from spantaleev/renovate/dock.mau.dev-mautrix-gmessages-0.x
Update dock.mau.dev/mautrix/gmessages Docker tag to v0.5.1
2024-10-16 14:30:59 +03:00
Slavi Pantaleev
1919df1896
Merge pull request #3610 from spantaleev/renovate/ajbura-cinny-4.x
Update ajbura/cinny Docker tag to v4.2.2
2024-10-16 14:30:33 +03:00
renovate[bot]
3405dd9ec8
Update dock.mau.dev/mautrix/gmessages Docker tag to v0.5.1 2024-10-16 11:12:35 +00:00
renovate[bot]
30a01ce354
Update ajbura/cinny Docker tag to v4.2.2 2024-10-16 11:12:26 +00:00
renovate[bot]
d9dd462db0
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.10.16 2024-10-16 07:14:48 +00:00
Slavi Pantaleev
56dc09bf74
Merge pull request #3608 from luixxiul/fix
Update docs/configuring-playbook-email2matrix.md
2024-10-16 07:34:59 +03:00
Suguru Hirahara
08dfa094ea
Update docs/configuring-playbook-email2matrix.md: adjust line breaks
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-16 02:53:22 +09:00
Suguru Hirahara
c5646712b6
Update docs/configuring-playbook-email2matrix.md: fix the anchor link text and add a section for installing
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-16 02:53:14 +09:00
Slavi Pantaleev
443a90fef5
Merge pull request #3607 from luixxiul/fix
Fix capitalization: id → ID
2024-10-15 20:46:13 +03:00
Suguru Hirahara
174b18be9a
Fix capitalization: id → ID
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-16 02:25:03 +09:00
Suguru Hirahara
ac90870e30
Fix capitalization: room id → room ID
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-16 02:24:52 +09:00
Slavi Pantaleev
cf50800b30
Merge pull request #3606 from luixxiul/fix
Update docs/configuring-playbook-bridge-appservice-slack.md
2024-10-15 19:44:37 +03:00
Slavi Pantaleev
ba775a20fc
Minor rewording 2024-10-15 19:44:28 +03:00
Slavi Pantaleev
b3aad9b8a4 Upgrade Synapse (v1.116.0 -> v1.117.0) 2024-10-15 19:08:56 +03:00
Suguru Hirahara
f2a5b8595e
Update docs/configuring-playbook-bridge-appservice-slack.md: use a common expression for adding configuration
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-16 01:04:15 +09:00
Suguru Hirahara
45abdaac01
Update docs/configuring-playbook-bridge-appservice-slack.md: fix capitalization
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-16 01:04:10 +09:00
Suguru Hirahara
bc579cd3ba
Update docs/configuring-playbook-bridge-appservice-slack.md: fix list numbering 2024-10-16 01:04:05 +09:00
Suguru Hirahara
c7e347468f
Update docs/configuring-playbook-bridge-appservice-slack.md: fix line breaks
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-16 01:04:01 +09:00
Suguru Hirahara
9a75758bbe
Update docs/configuring-playbook-bridge-appservice-slack.md: fix indentation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-16 01:03:50 +09:00
Slavi Pantaleev
58fc1a96d1
Merge pull request #3605 from spantaleev/renovate/grafana-11.x
Update dependency grafana to v11.2.2-0
2024-10-15 18:49:36 +03:00
Slavi Pantaleev
14d5cfd336
Merge pull request #3604 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.81
2024-10-15 18:49:17 +03:00
renovate[bot]
7dd961dea4
Update dependency grafana to v11.2.2-0 2024-10-15 15:31:15 +00:00
renovate[bot]
fb2f088bf0
Update vectorim/element-web Docker tag to v1.11.81 2024-10-15 15:31:11 +00:00
Slavi Pantaleev
3fd7377290
Merge pull request #3601 from luixxiul/fix
Make expression related to "Note" consistent
2024-10-15 18:30:53 +03:00
Slavi Pantaleev
291e66fddf
Merge pull request #3602 from darkdecoy/missing-semicolon
Update registering-users.md
2024-10-15 07:53:09 +03:00
Dark Decoy
41186b0771
Update registering-users.md 2024-10-14 18:47:59 +00:00
Suguru Hirahara
a8ab53c149
Use double wildcards for 'Note'
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-15 03:05:26 +09:00
Suguru Hirahara
ba9aeb7c9f
Consistent capitalization: NOTE → Note
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-15 02:58:40 +09:00
Suguru Hirahara
789bf88b92
Make "Note" consistent: wrap with wildcards
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-15 02:48:46 +09:00
Slavi Pantaleev
04b5a04df5
Merge pull request #3600 from luixxiul/fix
Update docs/configuring-playbook-bridge-hookshot.md
2024-10-14 20:32:52 +03:00
Suguru Hirahara
03ae2d11f8
Update docs/configuring-playbook-bridge-hookshot.md
- Wrap "Note" with wildcards
- Fix colon placement
- Fix typos
- Remove an unclosed parenthesis

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-14 22:10:03 +09:00
Slavi Pantaleev
37900b57d8
Merge pull request #3599 from luixxiul/fix
Fix capitalization: schildichat → SchildiChat
2024-10-14 10:12:55 +03:00
Suguru Hirahara
2a443046c8
Fix capitalization: schildichat → SchildiChat
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-14 15:59:16 +09:00
Slavi Pantaleev
76816f1d8e
Merge pull request #3598 from luixxiul/fix
Update docs/configuring-playbook-bot-matrix-registration-bot.md
2024-10-14 09:04:13 +03:00
Suguru Hirahara
036c949577
Update docs/configuring-playbook-bot-matrix-registration-bot.md
- Use a common expression for a comment
- Use a common expression for usage instruction
- Fix typos

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-14 14:27:54 +09:00
Slavi Pantaleev
74b80d46a5
Merge pull request #3597 from luixxiul/fix
Use common sentences on documentation regarding installation
2024-10-13 08:51:18 +03:00
Suguru Hirahara
435da333a9
Remove 'again'
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-13 11:50:04 +09:00
Suguru Hirahara
97889d8c33
Update documentation for SchildiChat
Add "DNS", "Adjusting the playbook configuration", and "Installing"

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-13 03:39:08 +09:00
Suguru Hirahara
1eb9bdd8b1
Update docs/configuring-playbook-client-schildichat: add a simple explanation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-13 03:39:04 +09:00
Suguru Hirahara
117d2ad7e8
Use common text pattern for web clients introduction
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-13 03:38:59 +09:00
Suguru Hirahara
913675c0a2
Update documentation for Cinny and Hydrogen
Add "DNS", "Adjusting the playbook configuration", and "Installing" sections

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-13 03:38:55 +09:00
Suguru Hirahara
282e8be07d
Use common sentences on documentation regarding installation
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-13 03:38:48 +09:00
Slavi Pantaleev
5268df9a8b
Merge pull request #3596 from luixxiul/fix
Use common expression on documentation regarding playbook configuration
2024-10-12 17:57:53 +03:00
Suguru Hirahara
bf5373479b
Use common expression on documentation regarding playbook configuration
Overall the playbook uses the expression "Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file:" with the heading "Adjusting the playbook configuration" for sections to explain what to be added as variables

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 20:59:15 +09:00
Slavi Pantaleev
ff0d52c824
Merge pull request #3595 from luixxiul/fix
Fix strings and capitalization
2024-10-12 14:16:52 +03:00
Suguru Hirahara
a4bfb9611e
Fix capitalization: conduit -> Conduit
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 20:12:48 +09:00
Suguru Hirahara
08cd782b29
Fix capitalization: cinny -> Cinny
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 20:12:33 +09:00
Suguru Hirahara
7161bf5cb4
Fix strings: Cactus Chat → Cactus Comments
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 20:12:09 +09:00
Slavi Pantaleev
e520577842
Merge pull request #3594 from luixxiul/fix
Update docs/configuring-playbook-bot-maubot.md for consistency
2024-10-12 13:20:32 +03:00
Suguru Hirahara
ab9f03f171
Update docs/configuring-playbook-bot-maubot.md for consistency - consistent expression for installing
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 19:06:44 +09:00
Slavi Pantaleev
f853b05701
Merge pull request #3593 from luixxiul/fix
Remove line breaks from docs/configuring-playbook-bot-maubot.md for consistency
2024-10-12 12:59:47 +03:00
Suguru Hirahara
45e1f6c8fb
Remove line breaks from docs/configuring-playbook-bot-maubot.md for consistency
Make the paragraph consistent with files such as:

- docs/configuring-playbook-bot-baibot.md
- docs/configuring-playbook-bot-buscarron.md
- docs/configuring-playbook-bot-honoroit.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 18:51:43 +09:00
Uğur İLTER
1047cb0d42
Update configuring-playbook-synapse-admin.md
Fixed compatibility misinformation
2024-10-12 12:32:27 +03:00
Slavi Pantaleev
13b9c8b1bf
Merge pull request #3591 from luixxiul/fix
Fixes capitalization: mjolnir → Mjolnir
2024-10-12 11:53:12 +03:00
Suguru Hirahara
dca619ba76
Fixes capitalization: mjolnir → Mjolnir
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 17:46:50 +09:00
Slavi Pantaleev
c249ff1a53
Merge pull request #3590 from luixxiul/fix
Fixes indentation on prerequisites.md
2024-10-12 10:45:23 +03:00
Suguru Hirahara
c5a6862f70
Fixes indentation on prerequisites.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 16:16:44 +09:00
Slavi Pantaleev
db53071960
Merge pull request #3589 from luixxiul/fix
Replace reference to nginx container image with one to Traefik container image on docs/container-images.md
2024-10-12 09:55:28 +03:00
Suguru Hirahara
09d6bf3673
Replace reference to nginx container image with one to Traefik container image on docs/container-images.md
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 15:26:25 +09:00
Slavi Pantaleev
d2ee9d8ebb
Merge pull request #3587 from luixxiul/fix
Fix typos on configuring-playbook-bot-draupnir.md and configuring-playbook-bot-mjolnir.md
2024-10-12 08:34:10 +03:00
Suguru Hirahara
0925317e15
Fix typos: coping -> copying
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 05:14:57 +09:00
Suguru Hirahara
982c790db1
Fix typos: it self -> itself
Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
2024-10-12 05:13:46 +09:00
Slavi Pantaleev
cf0793bd9f Move Gmessages encryption.pickle_key to a variable
Closes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3538

See: https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3538#issuecomment-2405780285
2024-10-11 15:03:25 +03:00
Slavi Pantaleev
2fc5d74049
Merge pull request #3585 from luixxiul/patch-2
Update configuring-playbook-client-schildichat.md
2024-10-11 07:27:04 +03:00
Suguru Hirahara
a0bf5a076c
Update configuring-playbook-client-schildichat.md 2024-10-11 04:25:20 +09:00
Slavi Pantaleev
e63e0977f2
Merge pull request #3581 from ilterugur/patch-1
Update faq.md
2024-10-10 07:28:43 +03:00
Slavi Pantaleev
038f7b2294
Merge pull request #3580 from aine-etke/patch-747085
synapse-admin v0.10.3-etke19
2024-10-10 07:28:02 +03:00
Uğur İLTER
3a993e43eb
Update faq.md
Fixed typo
2024-10-10 01:42:00 +03:00
Aine
427d02c926
synapse-admin v0.10.3-etke19 2024-10-10 00:55:03 +03:00
Slavi Pantaleev
d2c8491e41
Merge pull request #3578 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.80
2024-10-08 19:32:08 +03:00
renovate[bot]
29c7841cdd
Update vectorim/element-web Docker tag to v1.11.80 2024-10-08 15:53:26 +00:00
Slavi Pantaleev
ec5e379672 Update old references to com.devture.ansible.role.postgres & com.devture.ansible.role.traefik
Provoked by https://github.com/mother-of-all-self-hosting/mash-playbook/pull/280
2024-10-07 08:46:33 +03:00
Slavi Pantaleev
74c5277397
Merge pull request #3575 from spantaleev/renovate/matrixconduit-matrix-conduit-0.x
Update matrixconduit/matrix-conduit Docker tag to v0.9.0
2024-10-07 08:35:44 +03:00
renovate[bot]
85d0b442d2
Update matrixconduit/matrix-conduit Docker tag to v0.9.0 2024-10-06 18:32:34 +00:00
Slavi Pantaleev
7e2fb9882d
Merge pull request #3573 from hanthor/patch-3
Update Cinny nginx.conf.j2 to include service worker rewrite
2024-10-04 19:30:49 +03:00
James Reilly
195e0a4481
Update Cinny nginx.conf.j2 to include service worker rewrite
Cinny has added a service worker to support authenticated media and requires /sw,js to resolve to the serviceworker js file
2024-10-04 20:53:35 +05:30
Slavi Pantaleev
ef22504306
Merge pull request #3572 from spantaleev/renovate/matrixdotorg-sygnal-0.x
Update matrixdotorg/sygnal Docker tag to v0.15.1
2024-10-04 16:32:59 +03:00
renovate[bot]
cf29bc7511
Update matrixdotorg/sygnal Docker tag to v0.15.1 2024-10-04 13:06:19 +00:00
renovate[bot]
0fe2b06ce4
Update matrixdotorg/mjolnir Docker tag to v1.8.3 (#3570)
* Update matrixdotorg/mjolnir Docker tag to v1.8.1

* Upgrade Mjolnir to v1.8.3

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-10-03 23:16:03 +03:00
Slavi Pantaleev
b1e772f966
Merge pull request #3569 from FSG-Cat/patch-4
Revert Mjolnir version to 1.7.0 due to severe breakage.
2024-10-03 20:37:59 +03:00
Catalan Lover
e253903283
Revert Mjolnir version to 1.7.0 due to severe breakage. 2024-10-03 19:01:51 +02:00
Slavi Pantaleev
7afe6c261a Upgrade baibot (v1.3.0 -> v1.3.1) 2024-10-03 16:31:48 +03:00
Slavi Pantaleev
f3709f7df4 Upgrade baibot (v1.2.0 -> v1.3.0) and adjust default static definitions prompt
The new prompt makes use of the new `baibot_conversation_start_time_utc`
prompt variable, which is not a moving target (like `baibot_now_utc`)
and as such allows prompt caching to work.

Ref: https://platform.openai.com/docs/guides/prompt-caching
2024-10-03 12:13:40 +03:00
Slavi Pantaleev
3a082457f2 Update default OpenAI provider for biabot to use gpt-4o (instead of gpt-4o-2024-08-06)
Since 2024-10-02, `gpt-4o` is actually the same as `gpt-4o-2024-08-06`.

We previously used `gpt-4o-2024-08-06`, because it was pointing to a
much better (longer context) model. Since they're both the same now,
we'd better stick to the unpinned model and make it easier for future
users to get upgrades.
2024-10-03 09:29:44 +03:00
Slavi Pantaleev
b6bfc39dd1
Merge pull request #3567 from spantaleev/renovate/nginx-1.x
Update nginx Docker tag to v1.27.2
2024-10-03 08:34:24 +03:00
renovate[bot]
7f5f44ed47
Update nginx Docker tag to v1.27.2 2024-10-03 05:33:03 +00:00
Slavi Pantaleev
dba53732d6
Merge pull request #3565 from aine-etke/patch-39845
synapse-admin: authenticated media and options to delete media and redact events on user removal
2024-10-03 08:32:29 +03:00
Aine
86d0a01f19
synapse-admin: authenticated media and options to delete media and redact events on user removal 2024-10-03 01:20:18 +03:00
Slavi Pantaleev
d9a919a4be
Merge pull request #3564 from spantaleev/renovate/matrixdotorg-mjolnir-1.x
Update matrixdotorg/mjolnir Docker tag to v1.8.1
2024-10-02 22:55:16 +03:00
renovate[bot]
4243957825
Update matrixdotorg/mjolnir Docker tag to v1.8.1 2024-10-02 18:46:05 +00:00
Slavi Pantaleev
c605235aa8
Merge pull request #3563 from spantaleev/renovate/docker.io-metio-matrix-alertmanager-receiver-2024.x
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.10.2
2024-10-02 10:18:13 +03:00
renovate[bot]
88f3996cae
Update docker.io/metio/matrix-alertmanager-receiver Docker tag to v2024.10.2 2024-10-02 06:35:45 +00:00
Slavi Pantaleev
44dc9e1c74
Merge pull request #3561 from spantaleev/renovate/matrixdotorg-mjolnir-1.x
Update matrixdotorg/mjolnir Docker tag to v1.8.0
2024-10-02 08:04:35 +03:00
Slavi Pantaleev
0b5c5ed258
Merge pull request #3560 from spantaleev/renovate/grafana-11.x
Update dependency grafana to v11.1.7-0
2024-10-02 08:03:02 +03:00
renovate[bot]
c6da799a52
Update matrixdotorg/mjolnir Docker tag to v1.8.0 2024-10-02 01:33:07 +00:00
renovate[bot]
4d286ddd7a
Update dependency grafana to v11.1.7-0 2024-10-02 01:33:04 +00:00
Slavi Pantaleev
61c6e09fd8 Upgrade baibot (v1.1.1 -> v1.2.0) 2024-10-02 00:07:51 +03:00
Slavi Pantaleev
4b047b3d63 Fix pickle_key configuration value for mautrix-slack for compatibility with the old bridge 2024-10-01 21:29:21 +03:00
Slavi Pantaleev
bc704a2552 Make it possible to install maubot against Conduit
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3556
2024-10-01 16:19:53 +03:00
Slavi Pantaleev
8b71ce3dec
Merge pull request #3558 from spantaleev/renovate/ghcr.io-element-hq-synapse-1.x
Update ghcr.io/element-hq/synapse Docker tag to v1.116.0
2024-10-01 16:17:24 +03:00
Slavi Pantaleev
f8790319fa
Merge pull request #3557 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.79
2024-10-01 15:29:54 +03:00
renovate[bot]
d40be5aca6
Update ghcr.io/element-hq/synapse Docker tag to v1.116.0 2024-10-01 12:27:23 +00:00
renovate[bot]
148d842386
Update vectorim/element-web Docker tag to v1.11.79 2024-10-01 12:27:19 +00:00
Slavi Pantaleev
d1c8a52e3e
Merge pull request #3553 from krassle/patch-1
Fix validate_config.yml
2024-09-28 10:02:38 +03:00
krassle
a2db5c3d70
Fix validate_config.yml
`devture_postgres_*` -> `postgres_*`
2024-09-28 08:54:27 +02:00
Slavi Pantaleev
0a32d76b9b Improve Draupnir Usage docs 2024-09-28 08:35:18 +03:00
Slavi Pantaleev
71d4f79273 Expand the Usage section in the Draupnir docs 2024-09-27 21:30:09 +03:00
Slavi Pantaleev
3016630824 Upgrade Postgres (v17.0-0 -> v17.0-1) 2024-09-27 12:05:31 +03:00
Slavi Pantaleev
193946c68a Adjust some comments in group_vars/matrix_servers 2024-09-27 11:01:20 +03:00
Slavi Pantaleev
befa282865 Announce Postgres & Traefik role relocation to MASH organization 2024-09-27 10:21:16 +03:00
Slavi Pantaleev
54b715e7fe Fix endpoint URL in comment 2024-09-27 10:15:49 +03:00
Slavi Pantaleev
f93101f791 Switch traefik/traefik-certs-dumper Ansible role sources and adjust variable names (devture_traefik_ -> traefik_) 2024-09-27 10:14:29 +03:00
Slavi Pantaleev
8445843562 Switch postgres/postgres-backup Ansible role sources and adjust variable names (devture_postgres_ -> postgres_) 2024-09-27 09:37:24 +03:00
Slavi Pantaleev
62d66cc196
Merge pull request #3551 from adam-kress/master
Upgrade Jitsi (v9646-1 -> v9753-0)
2024-09-26 18:43:19 +03:00
adam-kress
fd530d7d48
Upgrade Jitsi (v9646-1 -> v9753-0) 2024-09-26 10:26:01 -04:00
Slavi Pantaleev
a0d29924c4
Merge pull request #3548 from aine-etke/add-synapse-admin-support-url
synapse-admin v0.10.3-etke17: add `Contact support` menu item
2024-09-25 19:40:27 +03:00
Aine
8efdfaf854
synapse-admin v0.10.3-etke17: add Contact support menu item 2024-09-25 19:15:48 +03:00
Slavi Pantaleev
8a4c71bbbe
Merge pull request #3547 from aine-etke/add-hookshot-outbound-webhooks
enable hookshot outbound webhooks
2024-09-25 15:57:40 +03:00
Aine
a541f51944
enable hookshot outbound webhooks 2024-09-25 15:25:31 +03:00
Aine
f657273cc8
add system-managed users to synapse-admin (#3546)
* WIP: add system-managed users to synapse-admin

* add missing users
2024-09-24 21:37:03 +03:00
Aine
338e6d91c3
synapse-admin v0.10.3-etke16: Upgrade to react-admin v5, restrict actions on specific users (#3543)
* synapse-admin v0.10.3-etke15: Upgrade to react-admin v5

* v0.10.3-etke16

* fix linter

* add _auto and _custom vars

* Use 2 spaces before #noqa var-naming

---------

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-09-24 16:58:17 +03:00
Slavi Pantaleev
e662eb1e32
Merge pull request #3545 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.78
2024-09-24 16:54:53 +03:00
renovate[bot]
7cbef06c4f
Update vectorim/element-web Docker tag to v1.11.78 2024-09-24 13:18:25 +00:00
Slavi Pantaleev
032809a053 Adjust default openai model id for baibot (gpt-4o -> gpt-4o-2024-08-06)
`gpt-4o` will point to `gpt-4o-2024-08-06` after 2nd of October 2024
anyway. At that time, we can revert to pointing to `gpt-4o`.

The reason `gpt-4o-2024-08-06` was chosen now instead of `gpt-4o`:

- the `max_response_tokens` configuration was set to 16k, which matches
  `gpt-4o-2024-08-06`, but is too large for `gpt-4o` (max 4k)

- baibot's own configs for dynamically created agents, as well as static
  config examples use `gpt-4o-2024-08-06` and the larger
  `max_response_tokens` value
2024-09-22 12:20:26 +03:00
Slavi Pantaleev
be96be8b3c Pin baibot to v1.1.1 and add default prompt for all statically-defined agents
The playbook did not use to define a prompt for statically-defined
agents.

Since prompt variables support landed in v1.1.0
(see 2a5a2d6a4d)
it makes sense to make use of it for a better out-of-the-box experience
(see https://github.com/etkecc/baibot/issues/10).
2024-09-22 12:04:42 +03:00
Slavi Pantaleev
6ff979e989
Merge pull request #3540 from spantaleev/renovate/etherpad-2.x
Update dependency etherpad to v2.2.5-0
2024-09-21 21:46:31 +03:00
renovate[bot]
b670d0f388
Update dependency etherpad to v2.2.5-0 2024-09-21 18:19:52 +00:00
Slavi Pantaleev
2b8d7e30f7 Upgrade Postgres (v16.3-3 -> v16.4-0) 2024-09-20 15:08:04 +03:00
David Mehren
c89c356e53
Add a global config option for Docker network MTU (#3502)
* Add a global config option for Docker network MTU

* Upgrade systemd_docker_base (v1.2.0-0 -> v1.3.0-0)

The new version includes `devture_systemd_docker_base_container_networks_driver_options`
due to 3cc7d12396

Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3502

* Switch from passing matrix_playbook_docker_network_mtu to respecting devture_systemd_docker_base_container_networks_driver_options

Related to:
- 3cc7d12396
- https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3502

* Update all roles to versions that respect `devture_systemd_docker_base_container_networks_driver_options`

---------

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-09-18 16:20:27 +03:00
Slavi Pantaleev
4d52880170 Upgrade matrix-alertmanager-receiver (2024.8.28 -> 2024.9.18)
Supersedes https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3539

Related to https://github.com/metio/matrix-alertmanager-receiver/pull/42
2024-09-18 14:48:25 +03:00
Slavi Pantaleev
5b2600b074
Merge pull request #3537 from aine-etke/patch-651904
synapse-admin v0.10.3-etke14: bulk registration works again, add ability to change avatars
2024-09-18 09:22:32 +03:00
Aine
14a31e3e40
synapse-admin v0.10.3-etke14: bulk registration works again, add ability to change avatars 2024-09-18 09:19:39 +03:00
Slavi Pantaleev
d9285203fa
Merge pull request #3536 from spantaleev/renovate/joseluisq-static-web-server-2.x
Update joseluisq/static-web-server Docker tag to v2.33.0
2024-09-18 09:06:13 +03:00
renovate[bot]
34634f144c
Update joseluisq/static-web-server Docker tag to v2.33.0 2024-09-17 23:06:37 +00:00
Slavi Pantaleev
cf5763978b Upgrade synapse-s3-storage-provider (1.3.0 -> 1.5.0) and adapt configuration
1.3.0 fails to work against the new Synapse (v1.115.0) image.
See: https://github.com/matrix-org/synapse-s3-storage-provider/pull/114

Related to: https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3535
2024-09-17 21:25:15 +03:00
Slavi Pantaleev
bc0d4759db
Merge pull request #3535 from spantaleev/renovate/ghcr.io-element-hq-synapse-1.x
Update ghcr.io/element-hq/synapse Docker tag to v1.115.0
2024-09-17 21:14:25 +03:00
renovate[bot]
605d054549
Update ghcr.io/element-hq/synapse Docker tag to v1.115.0 2024-09-17 15:15:35 +00:00
Slavi Pantaleev
aee7d2ca6c Do not use command_prefix = default for Meta bridges anymore
Seems like `default` is not a supported value and will not
make the bridge autoconfigure itself with the correct prefix anymore.

A value of `default` would be taken literally.
2024-09-17 16:16:48 +03:00
Slavi Pantaleev
d3b1060428 Fix Gmessages regression (missing homeserver.address and homeserver.domain configuration)
f9705b3323863bfcb85426 reworked the configuration and missed wiring
these to the existing variables.
2024-09-17 16:04:39 +03:00
Slavi Pantaleev
de34392edf
Merge pull request #3534 from KloolK/patch-2
Update maintenance-upgrading-services.md
2024-09-17 14:32:04 +03:00
Jan
239c7eddf8
Update maintenance-upgrading-services.md 2024-09-17 13:28:40 +02:00
Slavi Pantaleev
67df140ef4 Upgrade Traefik (v3.1.2-1 -> v3.1.3-0) 2024-09-17 10:42:27 +03:00
Slavi Pantaleev
53f3c94bef Enable backfilling for mautrix-gmessages, mautrix-signal and mautrix-slack
We'be already been going against upstream defaults and have been
enabling backfilling for a few other bridges (Messenger, Instagram, Telegram, Twitter).

Now I'm enabling backfilling by default for the remaining ones, for
consistency.
2024-09-17 09:39:35 +03:00
Slavi Pantaleev
f9705b3323 Upgrade mautrix-gmessages (v0.4.3 -> v0.5.0) and adapt configuration
Related to:
- https://github.com/mautrix/gmessages/releases/tag/v0.5.0
- https://mau.fi/blog/2024-09-mautrix-release/

It seems like the new version does not support a `/metrics` endpoint.
We skip keep the Ansible variables, but they're not doing anything.
2024-09-17 09:39:35 +03:00
Slavi Pantaleev
01e5514c4b Upgrade mautrix-meta (v0.3.2 -> v0.4.0) and adapt configuration
Related to:
- https://github.com/mautrix/meta/releases/tag/v0.4.0
- https://mau.fi/blog/2024-09-mautrix-release/

It seems like the new version does not support a `/metrics` endpoint.
We skip keep the Ansible variables, but they're not doing anything.
2024-09-17 09:39:35 +03:00
Slavi Pantaleev
626a851c82 Fix username_template potentially not being taken into account for mautrix-slack
While working on upgrading the Meta bridges to bridgev2, I've noticed
that {% raw %} and {% endraw %} on lines like that (immediately
preceding `username_template` may cause YAML indentation issues.
2024-09-17 09:39:35 +03:00
Slavi Pantaleev
52018c652f
Merge pull request #3530 from spantaleev/renovate/dock.mau.dev-mautrix-signal-0.x
Update dock.mau.dev/mautrix/signal Docker tag to v0.7.1
2024-09-17 06:36:02 +03:00
Slavi Pantaleev
42cc7b0844
Merge pull request #3531 from spantaleev/renovate/dock.mau.dev-mautrix-slack-0.x
Update dock.mau.dev/mautrix/slack Docker tag to v0.1.1
2024-09-17 06:34:19 +03:00
renovate[bot]
ca0abda581
Update dock.mau.dev/mautrix/slack Docker tag to v0.1.1 2024-09-16 13:07:41 +00:00
renovate[bot]
7507383a90
Update dock.mau.dev/mautrix/signal Docker tag to v0.7.1 2024-09-16 13:07:37 +00:00
Slavi Pantaleev
5ec468cc78
Merge pull request #3528 from spantaleev/renovate/ajbura-cinny-4.x
Update ajbura/cinny Docker tag to v4.2.1
2024-09-14 20:11:50 +03:00
renovate[bot]
3622d71d09
Update ajbura/cinny Docker tag to v4.2.1 2024-09-14 15:40:47 +00:00
Slavi Pantaleev
1666d1a1ff
Merge pull request #3526 from aine-etke/patch-158339
Synapse-Admin: Add UI option to block deleted rooms from being rejoined
2024-09-14 12:48:04 +03:00
Aine
97cf596683
Synapse-Admin: Add UI option to block deleted rooms from being rejoined 2024-09-14 11:06:33 +03:00
comeUpWithItLater
11e241e30a
Added an example of fronting the playbook's integrated Traefik reverse-proxy with the existing Caddy container (#3514)
* Added an example of fronting the playbook's integrated Traefik reverse-proxy with the existing Caddy container (not the `apt-get` or `yum` installed Caddy).  Helpful for folks who have an existing server with a Caddy container already serving multiple applications.

* Update examples/reverse-proxies/caddy2-in-container/README.md

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

* Update examples/reverse-proxies/caddy2-in-container/README.md

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

* Update examples/reverse-proxies/caddy2-in-container/README.md

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

* Code formatted, linted with yamllint

* README.md updated

* docs/configuring-playbook-own-webserver-caddy.md removed

---------

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-09-14 09:06:40 +03:00
Slavi Pantaleev
4bb08d4a53
Merge pull request #3525 from spantaleev/renovate/matrixdotorg-dendrite-monolith-0.x
Update matrixdotorg/dendrite-monolith Docker tag to v0.13.8
2024-09-13 21:28:34 +03:00
renovate[bot]
71abb52d59
Update matrixdotorg/dendrite-monolith Docker tag to v0.13.8 2024-09-13 16:39:54 +00:00
Slavi Pantaleev
482861fce1
Merge pull request #3523 from spantaleev/renovate/matrixdotorg-mjolnir-1.x
Update matrixdotorg/mjolnir Docker tag to v1.7.0
2024-09-12 22:13:27 +03:00
renovate[bot]
9ac29e7055
Update matrixdotorg/mjolnir Docker tag to v1.7.0 2024-09-12 18:34:27 +00:00
Slavi Pantaleev
00910248d2 Add baibot preset for Mistral 2024-09-12 21:33:39 +03:00
Slavi Pantaleev
74cc935ea6 Minor rewording 2024-09-12 20:53:19 +03:00
Slavi Pantaleev
1851973734 Add support for baibot
Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3369
2024-09-12 15:19:46 +03:00
Slavi Pantaleev
c65ddd649e Fix reverting synapse-admin to upstream instructions
Ref: https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3521
2024-09-12 15:14:55 +03:00
Aine
951c9c97a8
fix synapse-admin image prefix (#3521)
* fix synapse-admin image prefix

* fix typo
2024-09-12 15:14:12 +03:00
Slavi Pantaleev
b725f52677
Merge pull request #3520 from aine-etke/patch-343
add missing prefix to synapse-admin version
2024-09-12 12:14:23 +03:00
Aine
9cb3ca2f2d
add missing prefix to synapse-admin version 2024-09-12 12:13:02 +03:00
Slavi Pantaleev
968f305844 Announce the switch to etke.cc's synapse-admin fork
Related to: https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3519
2024-09-12 11:33:11 +03:00
Aine
73d338d9d1
Switch Synapse-Admin to etke.cc fork (#3519)
* switch to synapse-admin fork

* Fix typo

* Close unclosed ) and reword sentence

---------

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-09-12 11:31:12 +03:00
Slavi Pantaleev
5778e84925 Make use of media_path setting to fix media URLs for Heisenbridge
Related to:

- https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3518
- https://github.com/hifi/heisenbridge/issues/294

With this patch, when `matrix_heisenbridge_path_prefix` is the default
one we use (`/heisenbrdige`), URLs like this are constructed:

https://matrix.DOMAIN/heisenbridge/_heisenbridge/media/SERVER_NAME/MEDIA_ID/CHECKSUM/FILENAME

If `matrix_heisenbridge_path_prefix` is set to `/`, URLs like this are constructed:

https://matrix.DOMAIN/_heisenbridge/media/SERVER_NAME/MEDIA_ID/CHECKSUM/FILENAME

Our Traefik labels support handling both cases correctly.
2024-09-12 07:48:27 +03:00
Slavi Pantaleev
8e5e923214
Merge pull request #3517 from damadmai/matrix_media_repo_fix_signing_key_gen
Add temp suffix for container name to avoid conflict
2024-09-12 01:09:22 +03:00
Daniel A. Maierhofer
716177d5bc Add temp suffix for container name to avoid conflict 2024-09-11 23:40:10 +02:00
Slavi Pantaleev
c54c5c0076
Merge pull request #3515 from spantaleev/renovate/ajbura-cinny-4.x
Update ajbura/cinny Docker tag to v4.2.0
2024-09-11 17:53:48 +03:00
renovate[bot]
a482b95149
Update ajbura/cinny Docker tag to v4.2.0 2024-09-11 14:48:21 +00:00
Slavi Pantaleev
b9a6426555
Merge pull request #3513 from spantaleev/renovate/vectorim-element-web-1.x
Update vectorim/element-web Docker tag to v1.11.77
2024-09-10 19:12:49 +03:00
renovate[bot]
15127c6f52
Update vectorim/element-web Docker tag to v1.11.77 2024-09-10 16:00:59 +00:00
Slavi Pantaleev
8b56be0fe1
Merge pull request #3511 from spantaleev/renovate/ghcr.io-etkecc-honoroit-0.x
Update ghcr.io/etkecc/honoroit Docker tag to v0.9.26
2024-09-09 11:38:15 +03:00
renovate[bot]
f98caedd98
Update ghcr.io/etkecc/honoroit Docker tag to v0.9.26 2024-09-09 08:23:59 +00:00
Slavi Pantaleev
23301fd5ab Upgrade Traefik (v3.1.2-0 -> v3.1.2-1) 2024-09-08 23:06:46 +03:00
Slavi Pantaleev
165b24bea3 Fix container image in renovate annotation for schildichat-web
`matrix_client_schildichat_docker_image` was adjusted to use the
Github Container Registry in 171f5f84a2cd058f0c53780, but the Renovate marker was not adjusted.

Related to: https://github.com/spantaleev/matrix-docker-ansible-deploy/pull/3485
2024-09-07 02:45:11 +03:00
Slavi Pantaleev
283dd6494f Switch all etke.cc links (from Gitlab to Github)
Related to https://etke.cc/news/d3uw4utq4t3_rpxicrrfqqou_ynmptqjgk95pt-3n2s/
2024-09-07 02:43:00 +03:00
Slavi Pantaleev
1930984ce2 Make sentence more complete 2024-09-07 01:05:34 +03:00
Slavi Pantaleev
05b79057aa Do not add quotes around already-backtick-quoted Traefik rules
As reported in https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3451#issuecomment-2331316593

Likely the solution to https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3451
2024-09-05 14:58:43 +03:00
Slavi Pantaleev
fe300d3472
Merge pull request #3508 from lingawakad/lingawakad-patch-1
update agru url in installing.md
2024-09-04 08:57:35 +03:00
Slavi Pantaleev
e1f06d9ab7 Fix Jitsi TURN port numbers including IP when Coturn _host_bind_port is not just a port number
Fixes https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3504
2024-09-04 08:54:57 +03:00
noah
cc356aaee5
Update installing.md
update link to agru at github
2024-09-03 17:25:19 -04:00
Slavi Pantaleev
d19f93349a Upgrade Synapse (v1.113.0 -> v1.114.0) 2024-09-02 21:34:37 +03:00
wmhtet
4c24e311da
update on : Setting up maubot (optional) (#3506)
* Update configuring-playbook-bot-maubot.md

added info to avoid using Element Access Token because it will prevent the bot from functioning properly in the Encrypted room. 

Also added maubot simple service management on how to stop and start the maubot service

* Update configuring-playbook-bot-maubot.md

remove generic messages and change from backtick to bold

* Rewording in configuring-playbook-bot-maubot.md

---------

Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-09-02 17:59:24 +03:00
419 changed files with 12729 additions and 5852 deletions

View File

@ -2,7 +2,7 @@
name: Bug report name: Bug report
about: Create a report to help us improve about: Create a report to help us improve
title: '' title: ''
labels: '' labels: bug
assignees: '' assignees: ''
--- ---

6
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,6 @@
---
blank_issues_enabled: false
contact_links:
- name: Support room on Matrix
url: https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com
about: Get timely support from more people by joining our Matrix room.

View File

@ -2,7 +2,7 @@
name: Feature request name: Feature request
about: Suggest an idea for this project about: Suggest an idea for this project
title: '' title: ''
labels: '' labels: suggestion
assignees: '' assignees: ''
--- ---

View File

@ -2,13 +2,15 @@
name: I need help name: I need help
about: Get support from our community about: Get support from our community
title: '' title: ''
labels: '' labels: question
assignees: '' assignees: ''
--- ---
<!-- <!--
NOTE: you can usually get more timely support and from more people by joining our Matrix room (also bridged to IRC). See the [Support section of our README](https://github.com/spantaleev/matrix-docker-ansible-deploy#support) NOTE: our FAQ page is available at https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/faq.md. It contains a list of questions and answers about configuration, installation, troubleshooting, etc. Before creating a new issue, you are encouraged to have a look at it.
Also you can usually get more timely support and from more people by joining our Matrix room (also bridged to IRC). See the support section of our README.
--> -->
**Playbook Configuration**: **Playbook Configuration**:

View File

@ -3,6 +3,7 @@
"extends": [ "extends": [
"config:base" "config:base"
], ],
"labels": ["dependencies"],
"regexManagers": [ "regexManagers": [
{ {
"fileMatch": ["defaults/main.yml$"], "fileMatch": ["defaults/main.yml$"],
@ -15,7 +16,6 @@
{ {
"matchSourceUrlPrefixes": [ "matchSourceUrlPrefixes": [
"https://github.com/devture/com.devture.ansible.role", "https://github.com/devture/com.devture.ansible.role",
"https://gitlab.com/etke.cc/roles",
"https://github.com/mother-of-all-self-hosting" "https://github.com/mother-of-all-self-hosting"
], ],
"ignoreUnstable": false "ignoreUnstable": false

View File

@ -0,0 +1,50 @@
---
name: 'Close stale issues and PRs'
on: # yamllint disable-line rule:truthy
# Use this to do a dry run from a pull request
# pull_request:
schedule:
- cron: '30 1 * * *'
permissions:
issues: write
pull-requests: write
jobs:
stale:
if: github.repository == 'spantaleev/matrix-docker-ansible-deploy'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
######################################################################
# Issues/PRs
######################################################################
exempt-assignees: 'spantaleev,aine-etke'
operations-per-run: 100
# Use this to do a dry run from a pull request
# debug-only: true
######################################################################
# Issues
######################################################################
stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days. To exempt the issue from being marked as stale again due to inactivity, add "confirmed" label.'
close-issue-message: 'This issue was closed because it has been stalled for 7 days with no activity. If this issue is still reproduced, feel free to provide the issue with up-to-date information.'
stale-issue-label: 'stale'
# Add this label to exempt the issue from being marked as stale due to inactivity
exempt-issue-labels: 'confirmed'
# An allow-list of label(s) to only process the issues which contain one of these label(s).
any-of-issue-labels: 'needs-info,question'
######################################################################
# PRs
######################################################################
days-before-pr-stale: '365'
days-before-pr-close: '30'
stale-pr-message: 'This PR is stale because it has not been provided with required information or its conflicts have not been fixed over a year. Remove stale label or this will be closed in 30 days. To exempt the PR from being marked as stale again due to inactivity, add "confirmed" label.'
close-pr-message: 'This PR was closed because it has been stalled for 30 days with no activity.'
stale-pr-label: 'stale'
# Add this label to exempt the PR from being marked as stale due to inactivity
exempt-pr-labels: 'confirmed'
# An allow-list of label(s) to only process the PRs which contain one of these label(s).
any-of-pr-labels: 'needs-info,needs-rebase'
# Use this to ignore updates such as comments (only to keep the PR alive by bumping)
ignore-pr-updates: true

File diff suppressed because it is too large Load Diff

217
README.md
View File

@ -2,55 +2,66 @@
# Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker # Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
## Purpose ## 🎯 Purpose
This [Ansible](https://www.ansible.com/) playbook is meant to help you run your own [Matrix](http://matrix.org/) homeserver, along with the [various services](#supported-services) related to that. This [Ansible](https://www.ansible.com/) playbook is meant to help you run your own [Matrix](http://matrix.org/) homeserver, along with the [various services](#supported-services) related to that.
That is, it lets you join the Matrix network using your own `@<username>:<your-domain>` identifier, all hosted on your own server (see [prerequisites](docs/prerequisites.md)). That is, it lets you join the Matrix network using your own `@<username>:example.com` identifier, all hosted on your own server (see [prerequisites](docs/prerequisites.md)).
We run all services in [Docker](https://www.docker.com/) containers (see [the container images we use](docs/container-images.md)), which lets us have a predictable and up-to-date setup, across multiple supported distros (see [prerequisites](docs/prerequisites.md)) and [architectures](docs/alternative-architectures.md) (x86/amd64 being recommended). We run all [supported services](#-supported-services) in [Docker](https://www.docker.com/) containers (see [the container images we use](docs/container-images.md)), which lets us have a predictable and up-to-date setup, across multiple supported distros (see [prerequisites](docs/prerequisites.md)) and [architectures](docs/alternative-architectures.md) (x86/amd64 being recommended).
[Installation](docs/README.md) (upgrades) and some maintenance tasks are automated using [Ansible](https://www.ansible.com/) (see [our Ansible guide](docs/ansible.md)). Installation (upgrades) and some maintenance tasks are automated using [Ansible](https://www.ansible.com/) (see [our Ansible guide](docs/ansible.md)).
## ☁ Self-hosting or Managed / SaaS
## Self-hosting or Managed / SaaS This Ansible playbook tries to make self-hosting and maintaining a Matrix server fairly easy (see [Getting started](#-getting-started)). Still, running any service smoothly requires knowledge, time and effort.
This Ansible playbook tries to make self-hosting and maintaining a Matrix server fairly easy. Still, running any service smoothly requires knowledge, time and effort.
If you like the [FOSS](https://en.wikipedia.org/wiki/Free_and_open-source_software) spirit of this Ansible playbook, but prefer to put the responsibility on someone else, you can also [get a managed Matrix server from etke.cc](https://etke.cc?utm_source=github&utm_medium=readme&utm_campaign=mdad) (both hosting and on-premises) - a service built on top of this Ansible playbook but with [additional components](https://etke.cc/help/extras/?utm_source=github&utm_medium=readme&utm_campaign=mdad) and [services](https://etke.cc/services/?utm_source=github&utm_medium=readme&utm_campaign=mdad) which all help you run a Matrix server with ease. Be advised that etke.cc operates on a subscription-based approach and there is no "just set up my server once and be done with it" option. If you like the [FOSS](https://en.wikipedia.org/wiki/Free_and_open-source_software) spirit of this Ansible playbook, but prefer to put the responsibility on someone else, you can also [get a managed Matrix server from etke.cc](https://etke.cc?utm_source=github&utm_medium=readme&utm_campaign=mdad) (both hosting and on-premises) - a service built on top of this Ansible playbook but with [additional components](https://etke.cc/help/extras/?utm_source=github&utm_medium=readme&utm_campaign=mdad) and [services](https://etke.cc/services/?utm_source=github&utm_medium=readme&utm_campaign=mdad) which all help you run a Matrix server with ease. Be advised that etke.cc operates on a subscription-based approach and there is no "just set up my server once and be done with it" option.
## 🚀 Getting started
## Supported services We have detailed documentation in the [docs/](./docs) directory - see the Table of Contents in the [documentation README](./docs/README.md).
While the [list of supported services](#-supported-services) and documentation is very extensive, you don't need to read through everything. We recommend:
- Starting with the basics. You can always add/remove or tweak services later on.
- Following our installation guide. There are two guides available for beginners and advanced users:
- ⚡ **[Quick start](./docs/quick-start.md) (for beginners)**: this is recommended for those who do not have an existing Matrix server and want to start quickly with "opinionated defaults".
- **Full installation guide (for advanced users)**: if you need to import an existing Matrix server's data into the new server or want to learn more while setting up the server, follow this guide by starting with the **[Prerequisites](./docs/prerequisites.md)** documentation page.
## ✔ Supported services
Using this playbook, you can get the following list of services configured on your server. Basically, this playbook aims to get you up-and-running with all the necessities around Matrix, without you having to do anything else. Using this playbook, you can get the following list of services configured on your server. Basically, this playbook aims to get you up-and-running with all the necessities around Matrix, without you having to do anything else.
**Note**: the list below is exhaustive. It includes optional or even some advanced components that you will most likely not need. **Notes**:
Sticking with the defaults (which install a subset of the above components) is the best choice, especially for a new installation.
You can always re-run the playbook later to add or remove components.
- The list below is exhaustive. It includes optional or even some advanced components that you will most likely not need. Sticking with the defaults (which install a subset of the above components) is the best choice, especially for a new installation. You can always re-run the playbook later to add or remove components.
- Deprecated or unmaintained services are not listed. You can find documentations for them [here](docs/configuring-playbook.md#deprecated--unmaintained--removed-services).
### Homeserver ### Homeserver
The homeserver is the backbone of your matrix system. Choose one from the following list. The homeserver is the backbone of your Matrix system. Choose one from the following list.
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [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) | | [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) |
| [Conduit](https://conduit.rs) | x | 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) | | [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) |
| [Dendrite](https://github.com/matrix-org/dendrite) | x | 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) | | [Dendrite](https://github.com/matrix-org/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) |
### Clients ### Clients
Web clients for matrix that you can host on your own domains. Web clients for Matrix that you can host on your own domains.
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [Element](https://app.element.io/) | ✓ | Web UI, which is configured to connect to your own Synapse server by default | [Link](docs/configuring-playbook-client-element.md) | | [Element Web](https://github.com/element-hq/element-web) | ✅ | Default Matrix web client, configured to connect to your own Synapse server | [Link](docs/configuring-playbook-client-element-web.md) |
| [Hydrogen](https://github.com/element-hq/hydrogen-web) | x | Lightweight matrix client with legacy and mobile browser support | [Link](docs/configuring-playbook-client-hydrogen.md) | | [Hydrogen](https://github.com/element-hq/hydrogen-web) | ❌ | Lightweight Matrix client with legacy and mobile browser support | [Link](docs/configuring-playbook-client-hydrogen.md) |
| [Cinny](https://github.com/ajbura/cinny) | x | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-cinny.md) | | [Cinny](https://github.com/ajbura/cinny) | ❌ | Simple, elegant and secure web client | [Link](docs/configuring-playbook-client-cinny.md) |
| [SchildiChat](https://schildi.chat/) | x | Based on Element, with a more traditional instant messaging experience | [Link](docs/configuring-playbook-client-schildichat.md) | | [SchildiChat Web](https://schildi.chat/) | ❌ | Based on Element Web, with a more traditional instant messaging experience | [Link](docs/configuring-playbook-client-schildichat-web.md) |
### Server Components ### Server Components
@ -58,16 +69,13 @@ Services that run on the server to make the various parts of your installation w
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [PostgreSQL](https://www.postgresql.org/)| ✓ | Database for Synapse. [Using an external PostgreSQL server](docs/configuring-playbook-external-postgres.md) is also possible. | [Link](docs/configuring-playbook-external-postgres.md) | | [PostgreSQL](https://www.postgresql.org/)| ✅ | Database for Synapse. [Using an external PostgreSQL server](docs/configuring-playbook-external-postgres.md) is also possible. | [Link](docs/configuring-playbook-external-postgres.md) |
| [Coturn](https://github.com/coturn/coturn) | ✓ | STUN/TURN server for WebRTC audio/video calls | [Link](docs/configuring-playbook-turn.md) | | [Coturn](https://github.com/coturn/coturn) | ✅ | STUN/TURN server for WebRTC audio/video calls | [Link](docs/configuring-playbook-turn.md) |
| [Traefik](https://doc.traefik.io/traefik/) | ✓ | Web server, listening on ports 80, 443 and 8448 - standing in front of all the other services. Using your own webserver [is possible](docs/configuring-playbook-own-webserver.md) | [Link](docs/configuring-playbook-traefik.md) | | [Traefik](https://doc.traefik.io/traefik/) | ✅ | Web server, listening on ports 80, 443 and 8448 - standing in front of all the other services. Using your own webserver [is possible](docs/configuring-playbook-own-webserver.md) | [Link](docs/configuring-playbook-traefik.md) |
| [Let's Encrypt](https://letsencrypt.org/) | ✓ | Free SSL certificate, which secures the connection to all components | [Link](docs/configuring-playbook-ssl-certificates.md) | | [Let's Encrypt](https://letsencrypt.org/) | ✅ | Free SSL certificate, which secures the connection to all components | [Link](docs/configuring-playbook-ssl-certificates.md) |
| [ma1sd](https://github.com/ma1uta/ma1sd) | x | Matrix Identity Server | [Link](docs/configuring-playbook-ma1sd.md) | [Exim](https://www.exim.org/) | ✅ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) | [Link](docs/configuring-playbook-email.md) |
| [Exim](https://www.exim.org/) | ✓ | Mail server, through which all Matrix services send outgoing email (can be configured to relay through another SMTP server) | [Link](docs/configuring-playbook-email.md) | | [ma1sd](https://github.com/ma1uta/ma1sd) | ❌ | Matrix Identity Server | [Link](docs/configuring-playbook-ma1sd.md)
| [Dimension](https://github.com/turt2live/matrix-dimension) | x | An open source integrations manager for matrix clients | [Link](docs/configuring-playbook-dimension.md) | | [ddclient](https://github.com/linuxserver/docker-ddclient) | ❌ | Dynamic DNS | [Link](docs/configuring-playbook-dynamic-dns.md) |
| [Sygnal](https://github.com/matrix-org/sygnal) | x | Push gateway | [Link](docs/configuring-playbook-sygnal.md) |
| [ntfy](https://ntfy.sh) | x | Push notifications server | [Link](docs/configuring-playbook-ntfy.md) |
### Authentication ### Authentication
@ -75,12 +83,13 @@ Extend and modify how users are authenticated on your homeserver.
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [matrix-synapse-rest-auth](https://github.com/ma1uta/matrix-synapse-rest-password-provider) (advanced) | x | REST authentication password provider module | [Link](docs/configuring-playbook-rest-auth.md) | | [matrix-synapse-rest-auth](https://github.com/ma1uta/matrix-synapse-rest-password-provider) (advanced) | ❌ | REST authentication password provider module | [Link](docs/configuring-playbook-rest-auth.md) |
|[matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) (advanced) | x | Password provider module | [Link](docs/configuring-playbook-shared-secret-auth.md) | |[matrix-synapse-shared-secret-auth](https://github.com/devture/matrix-synapse-shared-secret-auth) (advanced) | ❌ | Password provider module | [Link](docs/configuring-playbook-shared-secret-auth.md) |
| [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) (advanced) | x | LDAP Auth password provider module | [Link](docs/configuring-playbook-ldap-auth.md) | | [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) (advanced) | ❌ | LDAP Auth password provider module | [Link](docs/configuring-playbook-ldap-auth.md) |
| [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) (advanced) | x | A proxy that handles Matrix registration requests and forwards them to LDAP. | [Link](docs/configuring-playbook-matrix-ldap-registration-proxy.md) | | [matrix-ldap-registration-proxy](https://gitlab.com/activism.international/matrix_ldap_registration_proxy) (advanced) | ❌ | A proxy that handles Matrix registration requests and forwards them to LDAP. | [Link](docs/configuring-playbook-matrix-ldap-registration-proxy.md) |
| [matrix-registration](https://github.com/ZerataX/matrix-registration) | x | A simple python application to have a token based matrix registration | [Link](docs/configuring-playbook-matrix-registration.md) | | [matrix-registration](https://github.com/ZerataX/matrix-registration) | ❌ | A simple python application to have a token based Matrix registration | [Link](docs/configuring-playbook-matrix-registration.md) |
| [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) (UVS) | ❌ | Service to verify details of a user based on an Open ID token | [Link](docs/configuring-playbook-user-verification-service.md) |
| [synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam) (advanced) | ❌ | A spam checker module | [Link](docs/configuring-playbook-synapse-simple-antispam.md) |
### File Storage ### File Storage
@ -88,44 +97,44 @@ Use alternative file storage to the default `media_store` folder.
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [Goofys](https://github.com/kahing/goofys) | x | [Amazon S3](https://aws.amazon.com/s3/) (or other S3-compatible object store) storage for Synapse's content repository (`media_store`) files | [Link](docs/configuring-playbook-s3-goofys.md) | | [Goofys](https://github.com/kahing/goofys) | | [Amazon S3](https://aws.amazon.com/s3/) (or other S3-compatible object store) storage for Synapse's content repository (`media_store`) files | [Link](docs/configuring-playbook-s3-goofys.md) |
| [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider) | x | [Amazon S3](https://aws.amazon.com/s3/) (or other S3-compatible object store) storage for Synapse's content repository (`media_store`) files | [Link](docs/configuring-playbook-s3.md) | | [synapse-s3-storage-provider](https://github.com/matrix-org/synapse-s3-storage-provider) | | [Amazon S3](https://aws.amazon.com/s3/) (or other S3-compatible object store) storage for Synapse's content repository (`media_store`) files | [Link](docs/configuring-playbook-s3.md) |
| [matrix-media-repo](https://github.com/turt2live/matrix-media-repo) | x | matrix-media-repo is a highly customizable multi-domain media repository for Matrix. Intended for medium to large deployments, this media repo de-duplicates media while being fully compliant with the specification. | [Link](docs/configuring-playbook-matrix-media-repo.md) | | [matrix-media-repo](https://github.com/turt2live/matrix-media-repo) | | matrix-media-repo is a highly customizable multi-domain media repository for Matrix. Intended for medium to large deployments, this media repo de-duplicates media while being fully compliant with the specification. | [Link](docs/configuring-playbook-matrix-media-repo.md) |
### Bridges ### Bridges
Bridges can be used to connect your matrix installation with third-party communication networks. Bridges can be used to connect your Matrix installation with third-party communication networks.
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [mautrix-discord](https://github.com/mautrix/discord) | x | Bridge to [Discord](https://discord.com/) | [Link](docs/configuring-playbook-bridge-mautrix-discord.md) | | [mautrix-discord](https://github.com/mautrix/discord) | | Bridge to [Discord](https://discord.com/) | [Link](docs/configuring-playbook-bridge-mautrix-discord.md) |
| [mautrix-slack](https://github.com/mautrix/slack) | x | Bridge to [Slack](https://slack.com/) | [Link](docs/configuring-playbook-bridge-mautrix-slack.md) | | [mautrix-slack](https://github.com/mautrix/slack) | | Bridge to [Slack](https://slack.com/) | [Link](docs/configuring-playbook-bridge-mautrix-slack.md) |
| [mautrix-telegram](https://github.com/mautrix/telegram) | x | Bridge to [Telegram](https://telegram.org/) | [Link](docs/configuring-playbook-bridge-mautrix-telegram.md) | | [mautrix-telegram](https://github.com/mautrix/telegram) | | Bridge to [Telegram](https://telegram.org/) | [Link](docs/configuring-playbook-bridge-mautrix-telegram.md) |
| [mautrix-gmessages](https://github.com/mautrix/gmessages) | x | Bridge to [Google Messages](https://messages.google.com/) | [Link](docs/configuring-playbook-bridge-mautrix-gmessages.md) | | [mautrix-gmessages](https://github.com/mautrix/gmessages) | | Bridge to [Google Messages](https://messages.google.com/) | [Link](docs/configuring-playbook-bridge-mautrix-gmessages.md) |
| [mautrix-whatsapp](https://github.com/mautrix/whatsapp) | x | Bridge to [WhatsApp](https://www.whatsapp.com/) | [Link](docs/configuring-playbook-bridge-mautrix-whatsapp.md) | | [mautrix-whatsapp](https://github.com/mautrix/whatsapp) | | Bridge to [WhatsApp](https://www.whatsapp.com/) | [Link](docs/configuring-playbook-bridge-mautrix-whatsapp.md) |
| [mautrix-facebook](https://github.com/mautrix/facebook) | x | Bridge to [Facebook](https://facebook.com/) | [Link](docs/configuring-playbook-bridge-mautrix-facebook.md) | | [mautrix-wsproxy](https://github.com/mautrix/wsproxy) | ❌ | Bridge to Android SMS or Apple iMessage | [Link](docs/configuring-playbook-bridge-mautrix-wsproxy.md) |
| [mautrix-twitter](https://github.com/mautrix/twitter) | x | Bridge to [Twitter](https://twitter.com/) | [Link](docs/configuring-playbook-bridge-mautrix-twitter.md) | | [mautrix-twitter](https://github.com/mautrix/twitter) | | Bridge to [Twitter](https://twitter.com/) | [Link](docs/configuring-playbook-bridge-mautrix-twitter.md) |
| [mautrix-hangouts](https://github.com/mautrix/hangouts) | x | Bridge to [Google Hangouts](https://en.wikipedia.org/wiki/Google_Hangouts) | [Link](docs/configuring-playbook-bridge-mautrix-hangouts.md) | | [mautrix-googlechat](https://github.com/mautrix/googlechat) | ❌ | Bridge to [Google Chat](https://en.wikipedia.org/wiki/Google_Chat) | [Link](docs/configuring-playbook-bridge-mautrix-googlechat.md) |
| [mautrix-googlechat](https://github.com/mautrix/googlechat) | x | Bridge to [Google Chat](https://en.wikipedia.org/wiki/Google_Chat) | [Link](docs/configuring-playbook-bridge-mautrix-googlechat.md) | | [mautrix-meta](https://github.com/mautrix/instagram) | ❌ | Bridge to [Messenger](https://messenger.com/) and [Instagram](https://instagram.com/) | Link for [Messenger](docs/configuring-playbook-bridge-mautrix-meta-messenger.md) / [Instagram](docs/configuring-playbook-bridge-mautrix-meta-instagram.md) |
| [mautrix-instagram](https://github.com/mautrix/instagram) | x | Bridge to [Instagram](https://instagram.com/) | [Link](docs/configuring-playbook-bridge-mautrix-instagram.md) | | [mautrix-signal](https://github.com/mautrix/signal) | ❌ | Bridge to [Signal](https://www.signal.org/) | [Link](docs/configuring-playbook-bridge-mautrix-signal.md) |
| [mautrix-signal](https://github.com/mautrix/signal) | x | Bridge to [Signal](https://www.signal.org/) | [Link](docs/configuring-playbook-bridge-mautrix-signal.md) | | [beeper-linkedin](https://github.com/beeper/linkedin) | ❌ | Bridge to [LinkedIn](https://www.linkedin.com/) | [Link](docs/configuring-playbook-bridge-beeper-linkedin.md) |
| [beeper-linkedin](https://github.com/beeper/linkedin) | x | Bridge to [LinkedIn](https://www.linkedin.com/) | [Link](docs/configuring-playbook-bridge-beeper-linkedin.md) | | [matrix-appservice-irc](https://github.com/matrix-org/matrix-appservice-irc) | ❌ | Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-appservice-irc.md) |
| [matrix-appservice-irc](https://github.com/matrix-org/matrix-appservice-irc) | x | Bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-appservice-irc.md) | | [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) | ❌ | Bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) | [Link](docs/configuring-playbook-bridge-appservice-kakaotalk.md) |
| [matrix-appservice-discord](https://github.com/Half-Shot/matrix-appservice-discord) | x | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-appservice-discord.md) | | [matrix-appservice-discord](https://github.com/matrix-org/matrix-appservice-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-appservice-discord.md) |
| [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) | x | Bridge to [Slack](https://slack.com/) | [Link](docs/configuring-playbook-bridge-appservice-slack.md) | | [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) | | Bridge to [Slack](https://slack.com/) | [Link](docs/configuring-playbook-bridge-appservice-slack.md) |
| [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks) | x | Bridge for slack compatible webhooks ([ConcourseCI](https://concourse-ci.org/), [Slack](https://slack.com/) etc. pp.) | [Link](docs/configuring-playbook-bridge-appservice-webhooks.md) | | [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) | ❌ | Bridge for generic webhooks and multiple project management services, such as GitHub, GitLab, Figma, and Jira in particular | [Link](docs/configuring-playbook-bridge-hookshot.md) |
| [matrix-hookshot](https://github.com/Half-Shot/matrix-hookshot) | x | Bridge for generic webhooks and multiple project management services, such as GitHub, GitLab, Figma, and Jira in particular | [Link](docs/configuring-playbook-bridge-hookshot.md) | | [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) | ❌ | Bridge to SMS | [Link](docs/configuring-playbook-bridge-matrix-bridge-sms.md) |
| [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) | x | Bridge to SMS | [Link](docs/configuring-playbook-bridge-matrix-bridge-sms.md) | | [matrix-wechat](https://github.com/duo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) | [Link](docs/configuring-playbook-bridge-wechat.md) |
| [Heisenbridge](https://github.com/hifi/heisenbridge) | x | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-heisenbridge.md) | | [Heisenbridge](https://github.com/hifi/heisenbridge) | | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) | [Link](docs/configuring-playbook-bridge-heisenbridge.md) |
| [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) | x | Bridge to [Skype](https://www.skype.com) | [Link](docs/configuring-playbook-bridge-go-skype-bridge.md) | | [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) | | Bridge to [Skype](https://www.skype.com) | [Link](docs/configuring-playbook-bridge-go-skype-bridge.md) |
| [mx-puppet-slack](https://hub.docker.com/r/sorunome/mx-puppet-slack) | x | Bridge to [Slack](https://slack.com) | [Link](docs/configuring-playbook-bridge-mx-puppet-slack.md) | | [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) | ❌ | Bridge to [Slack](https://slack.com) | [Link](docs/configuring-playbook-bridge-mx-puppet-slack.md) |
| [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) | x | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-instagram.md) | | [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) | | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-instagram.md) |
| [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) | x | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-twitter.md) | | [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) | | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-twitter.md) |
| [mx-puppet-discord](https://github.com/matrix-discord/mx-puppet-discord) | x | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-discord.md) | | [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) | ❌ | Bridge to [Discord](https://discordapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-discord.md) |
| [mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) | x | Bridge to [GroupMe](https://groupme.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-groupme.md) | | [mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) | | Bridge to [GroupMe](https://groupme.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-groupme.md) |
| [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) | x | Bridge to [Steam](https://steamapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-steam.md) | | [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) | | Bridge to [Steam](https://steamapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-steam.md) |
| [Email2Matrix](https://github.com/devture/email2matrix) | x | Bridge for relaying emails to Matrix rooms | [Link](docs/configuring-playbook-email2matrix.md) | | [Email2Matrix](https://github.com/devture/email2matrix) | | Bridge for relaying emails to Matrix rooms | [Link](docs/configuring-playbook-email2matrix.md) |
| [Postmoogle](https://github.com/etkecc/postmoogle) | ❌ | Email to Matrix bridge | [Link](docs/configuring-playbook-bridge-postmoogle.md) |
### Bots ### Bots
@ -133,60 +142,53 @@ Bots provide various additional functionality to your installation.
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [matrix-reminder-bot](https://github.com/anoadragon453/matrix-reminder-bot) | x | Bot for scheduling one-off & recurring reminders and alarms | [Link](docs/configuring-playbook-bot-matrix-reminder-bot.md) | | [baibot](https://github.com/etkecc/baibot) | ❌ | A bot that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you | [Link](docs/configuring-playbook-bot-baibot.md) |
| [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) | x | Bot for invitations by creating and managing registration tokens | [Link](docs/configuring-playbook-bot-matrix-registration-bot.md) | | [matrix-reminder-bot](https://github.com/anoadragon453/matrix-reminder-bot) | ❌ | Bot for scheduling one-off & recurring reminders and alarms | [Link](docs/configuring-playbook-bot-matrix-reminder-bot.md) |
| [maubot](https://github.com/maubot/maubot) | x | A plugin-based Matrix bot system | [Link](docs/configuring-playbook-bot-maubot.md) | | [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) | ❌ | Bot for invitations by creating and managing registration tokens | [Link](docs/configuring-playbook-bot-matrix-registration-bot.md) |
| [honoroit](https://gitlab.com/etke.cc/honoroit) | x | A helpdesk bot | [Link](docs/configuring-playbook-bot-honoroit.md) | | [maubot](https://github.com/maubot/maubot) | ❌ | A plugin-based Matrix bot system | [Link](docs/configuring-playbook-bot-maubot.md) |
| [Postmoogle](https://gitlab.com/etke.cc/postmoogle) | x | Email to matrix bot | [Link](docs/configuring-playbook-bot-postmoogle.md) | | [Honoroit](https://github.com/etkecc/honoroit) | ❌ | A helpdesk bot | [Link](docs/configuring-playbook-bot-honoroit.md) |
| [Go-NEB](https://github.com/matrix-org/go-neb) | x | A multi functional bot written in Go | [Link](docs/configuring-playbook-bot-go-neb.md) | | [Mjolnir](https://github.com/matrix-org/mjolnir) | ❌ | A moderation tool for Matrix | [Link](docs/configuring-playbook-bot-mjolnir.md) |
| [Mjolnir](https://github.com/matrix-org/mjolnir) | x | A moderation tool for Matrix | [Link](docs/configuring-playbook-bot-mjolnir.md) | | [Draupnir](https://github.com/the-draupnir-project/Draupnir) | ❌ | A moderation tool for Matrix (Fork of Mjolnir) | [Link](docs/configuring-playbook-bot-draupnir.md) (for [appservice mode](docs/configuring-playbook-appservice-draupnir-for-all.md))|
| [Draupnir](https://github.com/the-draupnir-project/Draupnir) | x | A moderation tool for Matrix (Fork of Mjolnir) | [Link](docs/configuring-playbook-bot-draupnir.md) | | [Buscarron](https://github.com/etkecc/buscarron) | ❌ | Web forms (HTTP POST) to Matrix | [Link](docs/configuring-playbook-bot-buscarron.md) |
| [Buscarron](https://gitlab.com/etke.cc/buscarron) | x | Web forms (HTTP POST) to matrix | [Link](docs/configuring-playbook-bot-buscarron.md) |
| [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) | x | ChatGPT from matrix | [Link](docs/configuring-playbook-bot-chatgpt.md) |
### Administration ### Administration
Services that help you in administrating and monitoring your matrix installation. Services that help you in administrating and monitoring your Matrix installation.
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [synapse-admin](https://github.com/Awesome-Technologies/synapse-admin) | x | A web UI tool for administrating users and rooms on your Matrix server | [Link](docs/configuring-playbook-synapse-admin.md) | | [matrix-alertmanager-receiver](https://github.com/metio/matrix-alertmanager-receiver) | ❌ | Prometheus' [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) client | [Link](docs/configuring-playbook-alertmanager-receiver.md) |
| Metrics and Graphs | x | Consists of the [Prometheus](https://prometheus.io) time-series database server, the Prometheus [node-exporter](https://prometheus.io/docs/guides/node-exporter/) host metrics exporter, and the [Grafana](https://grafana.com/) web UI | [Link](docs/configuring-playbook-prometheus-grafana.md) | | [Matrix Authentication Service](https://github.com/element-hq/matrix-authentication-service/) | ❌ | OAuth 2.0 and OpenID Provider server | [Link](docs/configuring-playbook-matrix-authentication-service.md) |
| [Borg](https://borgbackup.org) | x | Backups | [Link](docs/configuring-playbook-backup-borg.md) | | [synapse-admin](https://github.com/etkecc/synapse-admin) | ❌ | A web UI tool for administrating users and rooms on your Matrix server | [Link](docs/configuring-playbook-synapse-admin.md) |
| [Rageshake](https://github.com/matrix-org/rageshake) | x | Bug report server | [Link](docs/configuring-playbook-rageshake.md) | | Metrics and Graphs | ❌ | Consists of the [Prometheus](https://prometheus.io) time-series database server, the Prometheus [node-exporter](https://prometheus.io/docs/guides/node-exporter/) host metrics exporter, and the [Grafana](https://grafana.com/) web UI, with [prometheus-nginxlog-exporter](https://github.com/martin-helmich/prometheus-nginxlog-exporter/) being available too | [Link](docs/configuring-playbook-prometheus-grafana.md) (for [prometheus-nginxlog-exporter](docs/configuring-playbook-prometheus-nginxlog.md)) |
| [synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) | x | Export the usage statistics of a Synapse homeserver to be scraped by Prometheus. | [Link](docs/configuring-playbook-synapse-usage-exporter.md) | | [Borg](https://borgbackup.org) | ❌ | Backups | [Link](docs/configuring-playbook-backup-borg.md) |
| [rageshake](https://github.com/matrix-org/rageshake) | ❌ | Bug report server | [Link](docs/configuring-playbook-rageshake.md) |
| [synapse-usage-exporter](https://github.com/loelkes/synapse-usage-exporter) | ❌ | Export the usage statistics of a Synapse homeserver to be scraped by Prometheus. | [Link](docs/configuring-playbook-synapse-usage-exporter.md) |
### Misc ### Misc
Various services that don't fit any other category. Various services that don't fit any other categories.
| Name | Default? | Description | Documentation | | Name | Default? | Description | Documentation |
| ---- | -------- | ----------- | ------------- | | ---- | -------- | ----------- | ------------- |
| [sliding-sync](https://github.com/matrix-org/sliding-sync)| x | Sliding Sync support for clients which require it (e.g. Element X) | [Link](docs/configuring-playbook-sliding-sync-proxy.md) | | [sliding-sync](https://github.com/matrix-org/sliding-sync)| ❌ | (Superseded by Simplified Sliding Sync integrated into Synapse > `1.114` and Conduit > `0.6.0`) Sliding Sync support for clients which require it (e.g. old Element X versions before Simplified Sliding Sync was developed) | [Link](docs/configuring-playbook-sliding-sync-proxy.md) |
| [synapse_auto_accept_invite](https://github.com/matrix-org/synapse-auto-accept-invite) | x | A 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) | ❌ | A 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) | x | A 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) | ❌ | A cli tool that automatically compresses `state_groups` database table in background. | [Link](docs/configuring-playbook-synapse-auto-compressor.md) |
| [synapse-simple-antispam](https://github.com/t2bot/synapse-simple-antispam) (advanced) | x | A spam checker module | [Link](docs/configuring-playbook-synapse-simple-antispam.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) | x | Reconciliator and gateway for a managed Matrix server | [Link](docs/configuring-playbook-matrix-corporal.md) | | [Etherpad](https://etherpad.org) | ❌ | An open source collaborative text editor | [Link](docs/configuring-playbook-etherpad.md) |
| [Etherpad](https://etherpad.org) | x | An open source collaborative text editor | [Link](docs/configuring-playbook-etherpad.md) | | [Jitsi](https://jitsi.org/) | ❌ | An open source video-conferencing platform | [Link](docs/configuring-playbook-jitsi.md) |
| [Jitsi](https://jitsi.org/) | x | An open source video-conferencing platform | [Link](docs/configuring-playbook-jitsi.md) | | [Cactus Comments](https://cactus.chat) | ❌ | A federated comment system built on Matrix | [Link](docs/configuring-playbook-cactus-comments.md) |
| [Cactus Comments](https://cactus.chat) | x | A federated comment system built on matrix | [Link](docs/configuring-playbook-cactus-comments.md) | | [Pantalaimon](https://github.com/matrix-org/pantalaimon) | ❌ | An E2EE aware proxy daemon | [Link](docs/configuring-playbook-pantalaimon.md) |
| [Pantalaimon](https://github.com/matrix-org/pantalaimon) | x | An E2EE aware proxy daemon | [Link](docs/configuring-playbook-pantalaimon.md) | | [Sygnal](https://github.com/matrix-org/sygnal) | ❌ | Push gateway | [Link](docs/configuring-playbook-sygnal.md) |
| [ntfy](https://ntfy.sh) | ❌ | Push notifications server | [Link](docs/configuring-playbook-ntfy.md) |
## 🆕 Changes
## Installation
To configure and install Matrix on your own server, follow the [README in the docs/ directory](docs/README.md).
## Changes
This playbook evolves over time, sometimes with backward-incompatible changes. This playbook evolves over time, sometimes with backward-incompatible changes.
When updating the playbook, refer to [the changelog](CHANGELOG.md) to catch up with what's new. When updating the playbook, refer to [the changelog](CHANGELOG.md) to catch up with what's new.
## 🆘 Support
## Support
- Matrix room: [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) - Matrix room: [#matrix-docker-ansible-deploy:devture.com](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com)
@ -194,8 +196,7 @@ When updating the playbook, refer to [the changelog](CHANGELOG.md) to catch up w
- GitHub issues: [spantaleev/matrix-docker-ansible-deploy/issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues) - GitHub issues: [spantaleev/matrix-docker-ansible-deploy/issues](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues)
## 🤝 Related
## Related
You may also be interested in [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) - another Ansible playbook for self-hosting non-Matrix services (see its [List of supported services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md)). You may also be interested in [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) - another Ansible playbook for self-hosting non-Matrix services (see its [List of supported services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md)).

View File

@ -17,7 +17,7 @@ This large Traefik reverse-proxy change was also accompanied by another internal
[mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) is a new Ansible playbook that a few of us (matrix-docker-ansible-deploy contributors) have launched in 2023. It has quickly grown to supports [60+ services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md) and aims to do the same for [FOSS](https://en.wikipedia.org/wiki/Free_and_open-source_software) service hosting, as matrix-docker-ansible-deploy has done for Matrix - providing a clean and secure way to run a bunch of services in containers on a regular server (that is to say, without Kubernetes, etc.). Thanks to Traefik and Ansible role reuse, it's easy to host both mash-playbook services and matrix-docker-ansible-deploy services on the same server - see mash-playbook's [interoperability](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/interoperability.md) documentation page. If you've been looking for a holiday project or your New Year's Resolutions list contains "self-hosting more services", then you're welcome to give this new playbook a try and join its Matrix room ([#mash-playbook:devture.com](https://matrix.to/#/#mash-playbook:devture.com)). [mash-playbook](https://github.com/mother-of-all-self-hosting/mash-playbook) is a new Ansible playbook that a few of us (matrix-docker-ansible-deploy contributors) have launched in 2023. It has quickly grown to supports [60+ services](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/supported-services.md) and aims to do the same for [FOSS](https://en.wikipedia.org/wiki/Free_and_open-source_software) service hosting, as matrix-docker-ansible-deploy has done for Matrix - providing a clean and secure way to run a bunch of services in containers on a regular server (that is to say, without Kubernetes, etc.). Thanks to Traefik and Ansible role reuse, it's easy to host both mash-playbook services and matrix-docker-ansible-deploy services on the same server - see mash-playbook's [interoperability](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/interoperability.md) documentation page. If you've been looking for a holiday project or your New Year's Resolutions list contains "self-hosting more services", then you're welcome to give this new playbook a try and join its Matrix room ([#mash-playbook:devture.com](https://matrix.to/#/#mash-playbook:devture.com)).
Because many of the roles are now external to this playbook (defined in the [requirements.yml](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/da27655ef34999fa924bc0a5e641dbd9ba06f133/requirements.yml) file), running `make roles` (or better yet `just roles` via the [just tool](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#support-for-running-commands-via-just)) becomes a necessity each time one pulls playbook updates (`git pull`). Pulling external roles happens via the [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) command-line tool, but if available, the playbook would also use the much faster [agru](https://gitlab.com/etke.cc/tools/agru) tool (developed by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) this year). Because many of the roles are now external to this playbook (defined in the [requirements.yml](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/da27655ef34999fa924bc0a5e641dbd9ba06f133/requirements.yml) file), running `make roles` (or better yet `just roles` via the [just tool](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#support-for-running-commands-via-just)) becomes a necessity each time one pulls playbook updates (`git pull`). Pulling external roles happens via the [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) command-line tool, but if available, the playbook would also use the much faster [agru](https://github.com/etkecc/agru) tool (developed by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) this year).
With the internal (but important) details out of the way, we can now talk more about **new features that landed in matrix-docker-ansible-deploy in 2023**. With the internal (but important) details out of the way, we can now talk more about **new features that landed in matrix-docker-ansible-deploy in 2023**.
@ -33,11 +33,11 @@ A few other **major components and changes** landed in 2023:
* (2023-02-10) The [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation tool (successor to [Mjolnir](https://github.com/matrix-org/mjolnir)), thanks to a PR by [FSG-Cat](https://github.com/FSG-Cat) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#draupnir-moderation-tool-bot-support)) * (2023-02-10) The [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation tool (successor to [Mjolnir](https://github.com/matrix-org/mjolnir)), thanks to a PR by [FSG-Cat](https://github.com/FSG-Cat) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#draupnir-moderation-tool-bot-support))
* (2023-02-10) [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) to add Matrix Authentication Support to our Jitsi setup, thanks to a PR by [Jakob S.](https://github.com/jakicoll) from [zakk gGmbH](https://github.com/zakk-it) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#matrix-authentication-support-for-jitsi)) * (2023-02-10) [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service) to add Matrix Authentication Support to our Jitsi setup, thanks to a PR by [Jakob S.](https://github.com/jakicoll) from [zakk gGmbH](https://github.com/zakk-it) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#matrix-authentication-support-for-jitsi))
* (2023-02-25) The [Rageshake](https://github.com/matrix-org/rageshake) bug report server, thanks to a PR by [Benjamin Kampmann](https://github.com/gnunicorn) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#rageshake-support)) * (2023-02-25) The [rageshake](https://github.com/matrix-org/rageshake) bug report server, thanks to a PR by [Benjamin Kampmann](https://github.com/gnunicorn) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#rageshake-support))
* (2023-03-07) [Sliding Sync Proxy](https://github.com/matrix-org/sliding-sync) (currently a necessary component for [Element X](https://element.io/labs/element-x) to work), thanks to: [Benjamin Kampmann](https://github.com/gnunicorn) and [FSG-Cat](https://github.com/FSG-Cat) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#sliding-sync-proxy-element-x-support)) * (2023-03-07) [Sliding Sync proxy](https://github.com/matrix-org/sliding-sync) (currently a necessary component for [Element X](https://element.io/labs/element-x) to work), thanks to: [Benjamin Kampmann](https://github.com/gnunicorn) and [FSG-Cat](https://github.com/FSG-Cat) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#sliding-sync-proxy-element-x-support))
* (2023-03-12) synapse-auto-compressor to periodically and automatically run [rust-synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state), thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#synapse-auto-compressor-support)) * (2023-03-12) synapse-auto-compressor to periodically and automatically run [rust-synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state), thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#synapse-auto-compressor-support))
* (2023-07-17) [matrix-media-repo](https://github.com/turt2live/matrix-media-repo),  thanks to a PR by [Michael Hollister](https://github.com/Michael-Hollister) from [FUTO](https://www.futo.org/), the creators of the [Circles app](https://circu.li/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#matrix-media-repo-support)) * (2023-07-17) [matrix-media-repo](https://github.com/turt2live/matrix-media-repo),  thanks to a PR by [Michael Hollister](https://github.com/Michael-Hollister) from [FUTO](https://www.futo.org/), the creators of the [Circles app](https://circu.li/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#matrix-media-repo-support))
* (2023-08-31) [SchildiChat](https://github.com/SchildiChat/schildichat-desktop) client app (fork of [element-web)](https://github.com/element-hq/element-web), thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#schildichat-support)) * (2023-08-31) [SchildiChat Web](https://github.com/SchildiChat/schildichat-desktop) client app (fork of [Element Web)](https://github.com/element-hq/element-web), thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#schildichat-support))
* (2023-10-18) Postgres parameters auto-tuning, thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#postgres-parameters-are-automatically-tuned-now)) * (2023-10-18) Postgres parameters auto-tuning, thanks to a PR by [Aine](https://gitlab.com/etke.cc) from [etke.cc](https://etke.cc/) (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#postgres-parameters-are-automatically-tuned-now))
* (2023-10-23) Enabling federation of the room directory for Synapse (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#enabling-allow_public_rooms_over_federation-by-default-for-synapse)) * (2023-10-23) Enabling federation of the room directory for Synapse (see the [changelog entry](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/850078b7e37401ce91a0f9b686f60b945f6c3a96/CHANGELOG.md#enabling-allow_public_rooms_over_federation-by-default-for-synapse))
@ -84,7 +84,7 @@ Support for the following new **bots** was added:
Support for the following new **components and services** was added: Support for the following new **components and services** was added:
* [Borg backup](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#borg-backup-support) * [BorgBackup](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#borg-backup-support)
* [Cactus Comments](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#cactus-comments-support) * [Cactus Comments](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#cactus-comments-support)
* [Cinny](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#cinny-support) client support * [Cinny](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#cinny-support) client support
* [ntfy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#ntfy-push-notifications-support) notifications * [ntfy](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#ntfy-push-notifications-support) notifications
@ -96,7 +96,7 @@ Besides these major user-visible changes, a lot of work also happened **under th
* we made [major improvements to Synapse workers](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#potential-backward-compatibility-break-major-improvements-to-synapse-workers) - adding support for stream writers and for running multiple workers of various kinds (federation senders, pushers, background task processing workers, etc.) * we made [major improvements to Synapse workers](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#potential-backward-compatibility-break-major-improvements-to-synapse-workers) - adding support for stream writers and for running multiple workers of various kinds (federation senders, pushers, background task processing workers, etc.)
* we [improved the compatibility of (Synapse + workers) with the rest of the playbook](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#backward-compatibility-break-changing-how-reverse-proxying-to-synapse-works---now-via-a-matrix-synapse-reverse-proxy-companion-service) by introducing a new `matrix-synapse-reverse-proxy-companion-service` service * we [improved the compatibility of (Synapse + workers) with the rest of the playbook](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#backward-compatibility-break-changing-how-reverse-proxying-to-synapse-works---now-via-a-matrix-synapse-reverse-proxy-companion-service) by introducing a new `matrix-synapse-reverse-proxy-companion-service` service
* we started [splitting various Ansible roles out of the Matrix playbook and into independent roles](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#the-playbook-now-uses-external-roles-for-some-things) (e.g. `matrix-postgres` -> [com.devture.ansible.role.postgres](https://github.com/devture/com.devture.ansible.role.postgres)), which could be included in other Ansible playbooks. In fact, these roles already power a few **interesting other sibling playbooks**: * we started [splitting various Ansible roles out of the Matrix playbook and into independent roles](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/ba09705f7fbaf0108652ecbe209793b1d935eba7/CHANGELOG.md#the-playbook-now-uses-external-roles-for-some-things) (e.g. `matrix-postgres` -> [ansible-role-postgres](https://github.com/mother-of-all-self-hosting/ansible-role-postgres)), which could be included in other Ansible playbooks. In fact, these roles already power a few **interesting other sibling playbooks**:
* [gitea-docker-ansible-deploy](https://github.com/spantaleev/gitea-docker-ansible-deploy), for deploying a [Gitea](https://gitea.io/) (self-hosted [Git](https://git-scm.com/) service) server * [gitea-docker-ansible-deploy](https://github.com/spantaleev/gitea-docker-ansible-deploy), for deploying a [Gitea](https://gitea.io/) (self-hosted [Git](https://git-scm.com/) service) server
* [nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy), for deploying a [Nextcloud](https://nextcloud.com/) groupware server * [nextcloud-docker-ansible-deploy](https://github.com/spantaleev/nextcloud-docker-ansible-deploy), for deploying a [Nextcloud](https://nextcloud.com/) groupware server
* [vaultwarden-docker-ansible-deploy](https://github.com/spantaleev/vaultwarden-docker-ansible-deploy), for deploying a [Vaultwarden](https://github.com/dani-garcia/vaultwarden) password manager server (unofficial [Bitwarden](https://bitwarden.com/) compatible server) * [vaultwarden-docker-ansible-deploy](https://github.com/spantaleev/vaultwarden-docker-ansible-deploy), for deploying a [Vaultwarden](https://github.com/dani-garcia/vaultwarden) password manager server (unofficial [Bitwarden](https://bitwarden.com/) compatible server)

View File

@ -1,39 +1,86 @@
# Table of Contents # Table of Contents
- [FAQ](faq.md) - lots of questions and answers. Jump to [Prerequisites](prerequisites.md) to avoid reading too much and to just start a guided installation. ## ⬇️ Installaton guides <!-- NOTE: the 🚀 emoji is used by "Getting started" on README.md -->
- [Prerequisites](prerequisites.md) - go here to a guided installation using this Ansible playbook There are two installation guides available for beginners and advanced users.
- [Configuring your DNS server](configuring-dns.md) - **[Quick start](quick-start.md) (for beginners)**: this is recommended for those who do not have an existing Matrix server and want to start quickly with "opinionated defaults".
- [Getting this playbook's source code](getting-the-playbook.md) - **Full installation guide (for advanced users)**: if you need to import an existing Matrix server's data into the new server or want to learn more while setting up the server, follow this guide.
- [Configuring the playbook](configuring-playbook.md) - [Prerequisites](prerequisites.md)
- [Installing](installing.md) - [Configuring your DNS settings](configuring-dns.md)
- **Importing data from another server installation** - [Getting the playbook](getting-the-playbook.md)
- [Importing an existing SQLite database (from another Synapse installation)](importing-synapse-sqlite.md) (optional) - [Configuring the playbook](configuring-playbook.md)
- [Importing an existing Postgres database (from another installation)](importing-postgres.md) (optional) - [Installing](installing.md)
- [Importing `media_store` data files from an existing Synapse installation](importing-synapse-media-store.md) (optional) ## 🛠️ Configuration options
- [Registering users](registering-users.md) <!--
NOTE:
- Avoid putting the same anchor links as configuring-playbook.md lists under the "configuration options" section. Note that most of them are linked to "configure-playbook-*.md" and their titles start with "Setting up" (e.g. "Setting up Hydrogen").
-->
- [Updating users passwords](updating-users-passwords.md) You can check useful documentation for configuring components here: [Configuring the playbook](configuring-playbook.md)
- [Configuring service discovery via .well-known](configuring-well-known.md) - [Administration](configuring-playbook.md#administration) - services that help you in administrating and monitoring your Matrix installation
- [Maintenance / checking if services work](maintenance-checking-services.md) - [Authentication and user-related](configuring-playbook.md#authentication-and-user-related) - extend and modify how users are authenticated on your homeserver
- [Maintenance / upgrading services](maintenance-upgrading-services.md) - [Bots](configuring-playbook.md#bots) - bots provide various additional functionality to your installation
- [Maintenance / Synapse](maintenance-synapse.md) - [Bridges](configuring-playbook.md#bridging-other-networks) - bridges can be used to connect your Matrix installation with third-party communication networks
- [Maintenance / PostgreSQL](maintenance-postgres.md) - [Clients](configuring-playbook.md#clients) - web clients for Matrix that you can host on your own domains
- [Core service adjustments](configuring-playbook.md#core-service-adjustments) - backbone of your Matrix system
- [File Storage](configuring-playbook.md#file-storage) - use alternative file storage to the default `media_store` folder
<!-- NOTE: sort list items above alphabetically -->
- [Other specialized services](configuring-playbook.md#other-specialized-services) - various services that don't fit any other categories
## 👨‍🔧 Maintenance
If your server and services experience issues, feel free to come to [our support room](https://matrix.to/#/#matrix-docker-ansible-deploy:devture.com) and ask for help.
<!-- NOTE: sort list items alphabetically -->
- [Checking if services work](maintenance-checking-services.md)
- [Maintenance and Troubleshooting](maintenance-and-troubleshooting.md) - [Maintenance and Troubleshooting](maintenance-and-troubleshooting.md)
- [PostgreSQL maintenance](maintenance-postgres.md)
- [Synapse maintenance](maintenance-synapse.md)
- [Upgrading services](maintenance-upgrading-services.md)
## Other documentation pages <!-- NOTE: this header's title and the section below need optimization -->
- **[FAQ](faq.md)** - various Frequently Asked Questions about Matrix, with a focus on this Ansible playbook
<!-- NOTE: sort list items under faq.md alphabetically -->
- [Alternative architectures](alternative-architectures.md)
- [Container images used by the playbook](container-images.md)
- [Obtaining an Access Token](obtaining-access-tokens.md)
- [Playbook tags](playbook-tags.md)
- [Registering users](registering-users.md)
- [Running `just` commands](just.md)
- [Self-building](self-building.md)
- [Uninstalling](uninstalling.md) - [Uninstalling](uninstalling.md)
- [Updating users passwords](updating-users-passwords.md)

View File

@ -10,7 +10,6 @@ The playbook automatically determines the target server's architecture (the `mat
Some tools and container images can be built on the host or other measures can be used to install on that architecture. Some tools and container images can be built on the host or other measures can be used to install on that architecture.
## Implementation details ## Implementation details
For `amd64`, prebuilt container images (see the [container images we use](container-images.md)) are used for all components (except [Hydrogen](configuring-playbook-client-hydrogen.md), which goes through self-building). For `amd64`, prebuilt container images (see the [container images we use](container-images.md)) are used for all components (except [Hydrogen](configuring-playbook-client-hydrogen.md), which goes through self-building).

View File

@ -3,9 +3,7 @@
This playbook is meant to be run using [Ansible](https://www.ansible.com/). This playbook is meant to be run using [Ansible](https://www.ansible.com/).
Ansible typically runs on your local computer and carries out tasks on a remote server. Ansible typically runs on your local computer and carries out tasks on a remote server. If your local computer cannot run Ansible, you can also run Ansible on some server somewhere (including the server you wish to install to).
If your local computer cannot run Ansible, you can also run Ansible on some server somewhere (including the server you wish to install to).
## Supported Ansible versions ## Supported Ansible versions
@ -13,12 +11,10 @@ To manually check which version of Ansible you're on, run: `ansible --version`.
For the **best experience**, we recommend getting the **latest version of Ansible available**. For the **best experience**, we recommend getting the **latest version of Ansible available**.
We're not sure what's the minimum version of Ansible that can run this playbook successfully. We're not sure what's the minimum version of Ansible that can run this playbook successfully. The lowest version that we've confirmed (on 2022-11-26) to be working fine is: `ansible-core` (`2.11.7`) combined with `ansible` (`4.10.0`).
The lowest version that we've confirmed (on 2022-11-26) to be working fine is: `ansible-core` (`2.11.7`) combined with `ansible` (`4.10.0`).
If your distro ships with an Ansible version older than this, you may run into issues. Consider [Upgrading Ansible](#upgrading-ansible) or [using Ansible via Docker](#using-ansible-via-docker). If your distro ships with an Ansible version older than this, you may run into issues. Consider [Upgrading Ansible](#upgrading-ansible) or [using Ansible via Docker](#using-ansible-via-docker).
## Upgrading Ansible ## Upgrading Ansible
Depending on your distribution, you may be able to upgrade Ansible in a few different ways: Depending on your distribution, you may be able to upgrade Ansible in a few different ways:
@ -29,10 +25,7 @@ Depending on your distribution, you may be able to upgrade Ansible in a few diff
If using the `pip` method, do note that the `ansible-playbook` binary may not be on the `$PATH` (https://linuxconfig.org/linux-path-environment-variable), but in some more special location like `/usr/local/bin/ansible-playbook`. You may need to invoke it using the full path. If using the `pip` method, do note that the `ansible-playbook` binary may not be on the `$PATH` (https://linuxconfig.org/linux-path-environment-variable), but in some more special location like `/usr/local/bin/ansible-playbook`. You may need to invoke it using the full path.
**Note**: Both of the above methods are a bad way to run system software such as Ansible. If you find yourself needing to resort to such hacks, please consider reporting a bug to your distribution and/or switching to a sane distribution, which provides up-to-date software.
**Note**: Both of the above methods are a bad way to run system software such as Ansible.
If you find yourself needing to resort to such hacks, please consider reporting a bug to your distribution and/or switching to a sane distribution, which provides up-to-date software.
## Using Ansible via Docker ## Using Ansible via Docker
@ -42,11 +35,9 @@ This ensures that you're using a very recent Ansible version, which is less like
You can either [run Ansible in a container on the Matrix server itself](#running-ansible-in-a-container-on-the-matrix-server-itself) or [run Ansible in a container on another computer (not the Matrix server)](#running-ansible-in-a-container-on-another-computer-not-the-matrix-server). You can either [run Ansible in a container on the Matrix server itself](#running-ansible-in-a-container-on-the-matrix-server-itself) or [run Ansible in a container on another computer (not the Matrix server)](#running-ansible-in-a-container-on-another-computer-not-the-matrix-server).
### Running Ansible in a container on the Matrix server itself ### Running Ansible in a container on the Matrix server itself
To run Ansible in a (Docker) container on the Matrix server itself, you need to have a working Docker installation. To run Ansible in a (Docker) container on the Matrix server itself, you need to have a working Docker installation. Docker is normally installed by the playbook, so this may be a bit of a chicken and egg problem. To solve it:
Docker is normally installed by the playbook, so this may be a bit of a chicken and egg problem. To solve it:
- you **either** need to install Docker manually first. Follow [the upstream instructions](https://docs.docker.com/engine/install/) for your distribution and consider setting `matrix_playbook_docker_installation_enabled: false` in your `vars.yml` file, to prevent the playbook from installing Docker - you **either** need to install Docker manually first. Follow [the upstream instructions](https://docs.docker.com/engine/install/) for your distribution and consider setting `matrix_playbook_docker_installation_enabled: false` in your `vars.yml` file, to prevent the playbook from installing Docker
- **or** you need to run the playbook in another way (e.g. [Running Ansible in a container on another computer (not the Matrix server)](#running-ansible-in-a-container-on-another-computer-not-the-matrix-server)) at least the first time around - **or** you need to run the playbook in another way (e.g. [Running Ansible in a container on another computer (not the Matrix server)](#running-ansible-in-a-container-on-another-computer-not-the-matrix-server)) at least the first time around
@ -54,61 +45,59 @@ Docker is normally installed by the playbook, so this may be a bit of a chicken
Once you have a working Docker installation on the server, **clone the playbook** somewhere on the server and configure it as per usual (`inventory/hosts`, `inventory/host_vars/..`, etc.), as described in [configuring the playbook](configuring-playbook.md). Once you have a working Docker installation on the server, **clone the playbook** somewhere on the server and configure it as per usual (`inventory/hosts`, `inventory/host_vars/..`, etc.), as described in [configuring the playbook](configuring-playbook.md).
You would then need to add `ansible_connection=community.docker.nsenter` to the host line in `inventory/hosts`. This tells Ansible to connect to the "remote" machine by switching Linux namespaces with [nsenter](https://man7.org/linux/man-pages/man1/nsenter.1.html), instead of using SSH. You would then need to add `ansible_connection=community.docker.nsenter` to the host line in `inventory/hosts`. This tells Ansible to connect to the "remote" machine by switching Linux namespaces with [nsenter](https://man7.org/linux/man-pages/man1/nsenter.1.html), instead of using SSH.
Alternatively, you can leave your `inventory/hosts` as is and specify the connection type in **each** `ansible-playbook` call you do later, like this: `ansible-playbook --connection=community.docker.nsenter ...` Alternatively, you can leave your `inventory/hosts` as is and specify the connection type in **each** `ansible-playbook` call you do later, like this: `ansible-playbook --connection=community.docker.nsenter ...`
Run this from the playbook's directory: Run this from the playbook's directory:
```bash ```sh
docker run -it --rm \ docker run -it --rm \
--privileged \ --privileged \
--pid=host \ --pid=host \
-w /work \ -w /work \
-v `pwd`:/work \ -v `pwd`:/work \
--entrypoint=/bin/sh \ --entrypoint=/bin/sh \
docker.io/devture/ansible:2.17.0-r0-1 docker.io/devture/ansible:2.17.0-r0-2
``` ```
Once you execute the above command, you'll be dropped into a `/work` directory inside a Docker container. Once you execute the above command, you'll be dropped into a `/work` directory inside a Docker container. The `/work` directory contains the playbook's code.
The `/work` directory contains the playbook's code.
First, consider running `git config --global --add safe.directory /work` to [resolve directory ownership issues](#resolve-directory-ownership-issues). First, consider running `git config --global --add safe.directory /work` to [resolve directory ownership issues](#resolve-directory-ownership-issues).
Finally, you can execute `ansible-playbook ...` (or `ansible-playbook --connection=community.docker.nsenter ...`) commands as per normal now. Finally, you can execute `ansible-playbook ...` (or `ansible-playbook --connection=community.docker.nsenter ...`) commands as per normal now.
### Running Ansible in a container on another computer (not the Matrix server) ### Running Ansible in a container on another computer (not the Matrix server)
Run this from the playbook's directory: Run this from the playbook's directory:
```bash ```sh
docker run -it --rm \ docker run -it --rm \
-w /work \ -w /work \
-v `pwd`:/work \ -v `pwd`:/work \
-v $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro \ -v $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro \
--entrypoint=/bin/sh \ --entrypoint=/bin/sh \
docker.io/devture/ansible:2.17.0-r0-1 docker.io/devture/ansible:2.17.0-r0-2
``` ```
The above command tries to mount an SSH key (`$HOME/.ssh/id_rsa`) into the container (at `/root/.ssh/id_rsa`). The above command tries to mount an SSH key (`$HOME/.ssh/id_rsa`) into the container (at `/root/.ssh/id_rsa`). If your SSH key is at a different path (not in `$HOME/.ssh/id_rsa`), adjust that part.
If your SSH key is at a different path (not in `$HOME/.ssh/id_rsa`), adjust that part.
Once you execute the above command, you'll be dropped into a `/work` directory inside a Docker container. Once you execute the above command, you'll be dropped into a `/work` directory inside a Docker container. The `/work` directory contains the playbook's code.
The `/work` directory contains the playbook's code.
First, consider running `git config --global --add safe.directory /work` to [resolve directory ownership issues](#resolve-directory-ownership-issues). First, consider running `git config --global --add safe.directory /work` to [resolve directory ownership issues](#resolve-directory-ownership-issues).
Finally, you execute `ansible-playbook ...` commands as per normal now. Finally, you execute `ansible-playbook ...` commands as per normal now.
#### If you don't use SSH keys for authentication #### If you don't use SSH keys for authentication
If you don't use SSH keys for authentication, simply remove that whole line (`-v $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro`). If you don't use SSH keys for authentication, simply remove that whole line (`-v $HOME/.ssh/id_rsa:/root/.ssh/id_rsa:ro`).
To authenticate at your server using a password, you need to add a package. So, when you are in the shell of the ansible docker container (the previously used `docker run -it ...` command), run: To authenticate at your server using a password, you need to add a package. So, when you are in the shell of the ansible docker container (the previously used `docker run -it ...` command), run:
```bash
```sh
apk add sshpass apk add sshpass
``` ```
Then, to be asked for the password whenever running an `ansible-playbook` command add `--ask-pass` to the arguments of the command.
Then, to be asked for the password whenever running an `ansible-playbook` command add `--ask-pass` to the arguments of the command.
#### Resolve directory ownership issues #### Resolve directory ownership issues

View File

Before

Width:  |  Height:  |  Size: 205 KiB

After

Width:  |  Height:  |  Size: 205 KiB

View File

@ -1,7 +1,9 @@
(Adapted from the [upstream project](https://github.com/element-hq/synapse/blob/develop/docs/CAPTCHA_SETUP.md)) (Adapted from the [upstream project](https://github.com/element-hq/synapse/blob/develop/docs/CAPTCHA_SETUP.md))
# Overview # Overview
Captcha can be enabled for this home server. This file explains how to do that. Captcha can be enabled for this home server. This file explains how to do that.
The captcha mechanism used is Google's [ReCaptcha](https://www.google.com/recaptcha/). This requires API keys from Google. If your homeserver is Dendrite then [hCapcha](https://www.hcaptcha.com) can be used instead. The captcha mechanism used is Google's [ReCaptcha](https://www.google.com/recaptcha/). This requires API keys from Google. If your homeserver is Dendrite then [hCapcha](https://www.hcaptcha.com) can be used instead.
## ReCaptcha ## ReCaptcha
@ -16,7 +18,7 @@ Must be a reCAPTCHA **v2** key using the "I'm not a robot" Checkbox option
### Setting ReCaptcha keys ### Setting ReCaptcha keys
Once registered as above, set the following values: Once registered as above, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
# for Synapse # for Synapse

View File

@ -1,99 +1,78 @@
# Configuring your DNS server # Configuring your DNS settings
<sup>[Prerequisites](prerequisites.md) > Configuring your DNS settings > [Getting the playbook](getting-the-playbook.md) > [Configuring the playbook](configuring-playbook.md) > [Installing](installing.md)</sup>
To set up Matrix on your domain, you'd need to do some DNS configuration. To set up Matrix on your domain, you'd need to do some DNS configuration.
To use an identifier like `@<username>:<your-domain>`, you don't actually need ## DNS setting for server delegation (optional)
to install anything on the actual `<your-domain>` server.
You do, however need to instruct the Matrix network that Matrix services for `<your-domain>` are delegated In the sample `vars.yml` ([`examples/vars.yml`](../examples/vars.yml)), we recommend to use a short user identifier like `@<username>:example.com`.
over to `matrix.<your-domain>`.
As we discuss in [Server Delegation](howto-server-delegation.md), there are 2 different ways to set up such delegation:
- either by serving a `https://<your-domain>/.well-known/matrix/server` file (from the base domain!) To use such an identifier, you don't need to install anything on the actual `example.com` server. Instead, you need to instruct the Matrix network that Matrix services for `example.com` are redirected over to `matrix.example.com`. This redirection is also known as "delegation".
- or by using a `_matrix._tcp` DNS SRV record (don't confuse this with the `_matrix-identity._tcp` SRV record described below)
This playbook mostly discusses the well-known file method, because it's easier to manage with regard to certificates. As we discuss in [Server Delegation](howto-server-delegation.md), server delegation can be configured in either of these ways:
If you decide to go with the alternative method ([Server Delegation via a DNS SRV record (advanced)](howto-server-delegation.md#server-delegation-via-a-dns-srv-record-advanced)), please be aware that the general flow that this playbook guides you through may not match what you need to do.
- Setting up a `/.well-known/matrix/server` file on the base domain (`example.com`)
- Setting up a `_matrix._tcp` DNS SRV record
For simplicity reasons, this playbook recommends you to set up server delegation via a `/.well-known/matrix/server` file, instead of using a DNS SRV record.
If you choose the recommended method (file-based delegation), you do not need to configure the DNS record to enable server delegation. You will need to add a necessary configuration later, when you [finalize the installation](installing.md#finalize-the-installation) after installing and starting Matrix services.
On the other hand, if you choose this method (setting up a DNS SRV record), you need to configure the additional DNS record as well as adjust SSL certificate handling. Take a look at this documentation for more information: [Server Delegation via a DNS SRV record (advanced)](howto-server-delegation.md#server-delegation-via-a-dns-srv-record-advanced)
## DNS settings for services enabled by default ## DNS settings for services enabled by default
| Type | Host | Priority | Weight | Port | Target | To serve the base domain (`example.com`) and [Element Web](configuring-playbook-client-element-web.md) with the default subdomain, adjust DNS records as below.
| ----- | ---------------------------- | -------- | ------ | ---- | ---------------------- |
| A | `matrix` | - | - | - | `matrix-server-IP` | | Type | Host | Priority | Weight | Port | Target |
| CNAME | `element` | - | - | - | `matrix.<your-domain>` | | ----- | ---------------------------- | -------- | ------ | ---- | ---------------------|
| A | `matrix` | - | - | - | `matrix-server-IP` |
| CNAME | `element` | - | - | - | `matrix.example.com` |
As the table illustrates, you need to create 2 subdomains (`matrix.example.com` and `element.example.com`) and point both of them to your server's IP address (DNS `A` record or `CNAME` record is fine).
The `element.example.com` subdomain is necessary, because this playbook installs the [Element Web](https://github.com/element-hq/element-web) client for you by default. If you'd rather instruct the playbook not to install Element Web (`matrix_client_element_enabled: false` when [Configuring the playbook](configuring-playbook.md) later), feel free to skip the `element.example.com` DNS record.
Be mindful as to how long it will take for the DNS records to propagate. Be mindful as to how long it will take for the DNS records to propagate.
If you are using Cloudflare DNS, make sure to disable the proxy and set all records to `DNS only`. Otherwise, fetching certificates will fail. If you are using Cloudflare DNS, make sure to disable the proxy and set all records to "DNS only". Otherwise, fetching certificates will fail.
When you're done configuring DNS, proceed to [Configuring the playbook](configuring-playbook.md).
## DNS settings for optional services/features ## DNS settings for optional services/features
| Used by component | Type | Host | Priority | Weight | Port | Target | For other services which may need subdomain settings, see the table below and configure the DNS (`CNAME`) records accordingly.
| ----------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------ | -------- | ------ | ---- | --------------------------- |
| [ma1sd](configuring-playbook-ma1sd.md) identity server | SRV | `_matrix-identity._tcp` | 10 | 0 | 443 | `matrix.<your-domain>` | | Used by component | Type | Host | Priority | Weight | Port | Target |
| [Dimension](configuring-playbook-dimension.md) integration server | CNAME | `dimension` | - | - | - | `matrix.<your-domain>` | | -------------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------ | -------- | ------ | ---- | -----------------------------------|
| [Jitsi](configuring-playbook-jitsi.md) video-conferencing platform | CNAME | `jitsi` | - | - | - | `matrix.<your-domain>` | | [Dimension](configuring-playbook-dimension.md) integration server | CNAME | `dimension` | - | - | - | `matrix.example.com` |
| [Prometheus/Grafana](configuring-playbook-prometheus-grafana.md) monitoring system | CNAME | `stats` | - | - | - | `matrix.<your-domain>` | | [Jitsi](configuring-playbook-jitsi.md) video-conferencing platform | CNAME | `jitsi` | - | - | - | `matrix.example.com` |
| [Go-NEB](configuring-playbook-bot-go-neb.md) bot | CNAME | `goneb` | - | - | - | `matrix.<your-domain>` | | [Prometheus/Grafana](configuring-playbook-prometheus-grafana.md) monitoring system | CNAME | `stats` | - | - | - | `matrix.example.com` |
| [Sygnal](configuring-playbook-sygnal.md) push notification gateway | CNAME | `sygnal` | - | - | - | `matrix.<your-domain>` | | [Go-NEB](configuring-playbook-bot-go-neb.md) bot | CNAME | `goneb` | - | - | - | `matrix.example.com` |
| [ntfy](configuring-playbook-ntfy.md) push notifications server | CNAME | `ntfy` | - | - | - | `matrix.<your-domain>` | | [Sygnal](configuring-playbook-sygnal.md) push notification gateway | CNAME | `sygnal` | - | - | - | `matrix.example.com` |
| [Etherpad](configuring-playbook-etherpad.md) collaborative text editor | CNAME | `etherpad` | - | - | - | `matrix.<your-domain>` | | [ntfy](configuring-playbook-ntfy.md) push notifications server | CNAME | `ntfy` | - | - | - | `matrix.example.com` |
| [Hydrogen](configuring-playbook-client-hydrogen.md) web client | CNAME | `hydrogen` | - | - | - | `matrix.<your-domain>` | | [Etherpad](configuring-playbook-etherpad.md) collaborative text editor | CNAME | `etherpad` | - | - | - | `matrix.example.com` |
| [Cinny](configuring-playbook-client-cinny.md) web client | CNAME | `cinny` | - | - | - | `matrix.<your-domain>` | | [Hydrogen](configuring-playbook-client-hydrogen.md) web client | CNAME | `hydrogen` | - | - | - | `matrix.example.com` |
| [SchildiChat](configuring-playbook-client-schildichat.md) web client | CNAME | `schildichat` | - | - | - | `matrix.<your-domain>` | | [Cinny](configuring-playbook-client-cinny.md) web client | CNAME | `cinny` | - | - | - | `matrix.example.com` |
| [wsproxy](configuring-playbook-bridge-mautrix-wsproxy.md) sms bridge | CNAME | `wsproxy` | - | - | - | `matrix.<your-domain>` | | [SchildiChat Web](configuring-playbook-client-schildichat-web.md) client | CNAME | `schildichat` | - | - | - | `matrix.example.com` |
| [Buscarron](configuring-playbook-bot-buscarron.md) helpdesk bot | CNAME | `buscarron` | - | - | - | `matrix.<your-domain>` | | [wsproxy](configuring-playbook-bridge-mautrix-wsproxy.md) sms bridge | CNAME | `wsproxy` | - | - | - | `matrix.example.com` |
| [Postmoogle](configuring-playbook-bot-postmoogle.md)/[Email2Matrix](configuring-playbook-email2matrix.md) email bridges | MX | `matrix` | 10 | 0 | - | `matrix.<your-domain>` | | [Buscarron](configuring-playbook-bot-buscarron.md) helpdesk bot | CNAME | `buscarron` | - | - | - | `matrix.example.com` |
| [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `matrix` | - | - | - | `v=spf1 ip4:<your-ip> -all` | | [rageshake](configuring-playbook-rageshake.md) bug report server | CNAME | `rageshake` | - | - | - | `matrix.example.com` |
| [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `_dmarc.matrix` | - | - | - | `v=DMARC1; p=quarantine;` | | [ma1sd](configuring-playbook-ma1sd.md) identity server | SRV | `_matrix-identity._tcp` | 10 | 0 | 443 | `matrix.example.com` |
| [Postmoogle](configuring-playbook-bot-postmoogle.md) email bridge | TXT | `postmoogle._domainkey.matrix` | - | - | - | get it from `!pm dkim` | | [Postmoogle](configuring-playbook-bridge-postmoogle.md)/[Email2Matrix](configuring-playbook-email2matrix.md) email bridges | MX | `matrix` | 10 | 0 | - | `matrix.example.com` |
| [Postmoogle](configuring-playbook-bridge-postmoogle.md) email bridge | TXT | `matrix` | - | - | - | `v=spf1 ip4:matrix-server-IP -all` |
| [Postmoogle](configuring-playbook-bridge-postmoogle.md) email bridge | TXT | `_dmarc.matrix` | - | - | - | `v=DMARC1; p=quarantine;` |
| [Postmoogle](configuring-playbook-bridge-postmoogle.md) email bridge | TXT | `postmoogle._domainkey.matrix` | - | - | - | get it from `!pm dkim` |
### SRV record for ma1sd
To make ma1sd enable its federation features, you need to set up a `_matrix-identity._tcp` SRV record. Don't confuse this with the `_matrix._tcp` SRV record for server delegation. See the table above and [this section](configuring-playbook-ma1sd.md#adjusting-dns-records) for values which need to be specified.
When setting up a SRV record, if you are asked for a service and protocol instead of a hostname split the host value from the table where the period is. For example use service as `_matrix-identity` and protocol as `_tcp`. When setting up a SRV record, if you are asked for a service and protocol instead of a hostname split the host value from the table where the period is. For example use service as `_matrix-identity` and protocol as `_tcp`.
## Subdomains setup ### MX and TXT records for Postmoogle
As the table above illustrates, you need to create 2 subdomains (`matrix.<your-domain>` and `element.<your-domain>`) and point both of them to your new server's IP address (DNS `A` record or `CNAME` record is fine). To make Postmoogle enable its email sending features, you need to configure MX and TXT (SPF, DMARC, and DKIM) records. See the table above for values which need to be specified.
The `element.<your-domain>` subdomain may be necessary, because this playbook installs the [Element](https://github.com/element-hq/element-web) web client for you. ---------------------------------------------
If you'd rather instruct the playbook not to install Element (`matrix_client_element_enabled: false` when [Configuring the playbook](configuring-playbook.md) later), feel free to skip the `element.<your-domain>` DNS record.
The `dimension.<your-domain>` subdomain may be necessary, because this playbook could install the [Dimension integrations manager](http://dimension.t2bot.io/) for you. Dimension installation is disabled by default, because it's only possible to install it after the other Matrix services are working (see [Setting up Dimension](configuring-playbook-dimension.md) later). If you do not wish to set up Dimension, feel free to skip the `dimension.<your-domain>` DNS record. [▶️](getting-the-playbook.md) When you're done with the DNS configuration and ready to proceed, continue with [Getting the playbook](getting-the-playbook.md).
The `jitsi.<your-domain>` subdomain may be necessary, because this playbook could install the [Jitsi video-conferencing platform](https://jitsi.org/) for you. Jitsi installation is disabled by default, because it may be heavy and is not a core required component. To learn how to install it, see our [Jitsi](configuring-playbook-jitsi.md) guide. If you do not wish to set up Jitsi, feel free to skip the `jitsi.<your-domain>` DNS record.
The `stats.<your-domain>` subdomain may be necessary, because this playbook could install [Grafana](https://grafana.com/) and setup performance metrics for you. Grafana installation is disabled by default, it is not a core required component. To learn how to install it, see our [metrics and graphs guide](configuring-playbook-prometheus-grafana.md). If you do not wish to set up Grafana, feel free to skip the `stats.<your-domain>` DNS record. It is possible to install Prometheus without installing Grafana, this would also not require the `stats.<your-domain>` subdomain.
The `goneb.<your-domain>` subdomain may be necessary, because this playbook could install the [Go-NEB](https://github.com/matrix-org/go-neb) bot. The installation of Go-NEB is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Go-NEB guide](configuring-playbook-bot-go-neb.md). If you do not wish to set up Go-NEB, feel free to skip the `goneb.<your-domain>` DNS record.
The `sygnal.<your-domain>` subdomain may be necessary, because this playbook could install the [Sygnal](https://github.com/matrix-org/sygnal) push gateway. The installation of Sygnal is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Sygnal guide](configuring-playbook-sygnal.md). If you do not wish to set up Sygnal (you probably don't, unless you're also developing/building your own Matrix apps), feel free to skip the `sygnal.<your-domain>` DNS record.
The `ntfy.<your-domain>` subdomain may be necessary, because this playbook could install the [ntfy](https://ntfy.sh/) UnifiedPush-compatible push notifications server. The installation of ntfy is disabled by default, it is not a core required component. To learn how to install it, see our [configuring ntfy guide](configuring-playbook-ntfy.md). If you do not wish to set up ntfy, feel free to skip the `ntfy.<your-domain>` DNS record.
The `etherpad.<your-domain>` subdomain may be necessary, because this playbook could install the [Etherpad](https://etherpad.org/) a highly customizable open source online editor providing collaborative editing in really real-time. The installation of etherpad is disabled by default, it is not a core required component. To learn how to install it, see our [configuring etherpad guide](configuring-playbook-etherpad.md). If you do not wish to set up etherpad, feel free to skip the `etherpad.<your-domain>` DNS record.
The `hydrogen.<your-domain>` subdomain may be necessary, because this playbook could install the [Hydrogen](https://github.com/element-hq/hydrogen-web) web client. The installation of Hydrogen is disabled by default, it is not a core required component. To learn how to install it, see our [configuring Hydrogen guide](configuring-playbook-client-hydrogen.md). If you do not wish to set up Hydrogen, feel free to skip the `hydrogen.<your-domain>` DNS record.
The `cinny.<your-domain>` subdomain may be necessary, because this playbook could install the [Cinny](https://github.com/ajbura/cinny) web client. The installation of cinny is disabled by default, it is not a core required component. To learn how to install it, see our [configuring cinny guide](configuring-playbook-client-cinny.md). If you do not wish to set up cinny, feel free to skip the `cinny.<your-domain>` DNS record.
The `wsproxy.<your-domain>` subdomain may be necessary, because this playbook could install the [wsproxy](https://github.com/mautrix/wsproxy) web client. The installation of wsproxy is disabled by default, it is not a core required component. To learn how to install it, see our [configuring wsproxy guide](configuring-playbook-bridge-mautrix-wsproxy.md). If you do not wish to set up wsproxy, feel free to skip the `wsproxy.<your-domain>` DNS record.
The `buscarron.<your-domain>` subdomain may be necessary, because this playbook could install the [buscarron](https://gitlab.com/etke.cc/buscarron) bot. The installation of buscarron is disabled by default, it is not a core required component. To learn how to install it, see our [configuring buscarron guide](configuring-playbook-bot-buscarron.md). If you do not wish to set up buscarron, feel free to skip the `buscarron.<your-domain>` DNS record.
## `_matrix-identity._tcp` SRV record setup
To make the [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server (which this playbook may optionally install for you) enable its federation features, set up an SRV record that looks like this:
- Name: `_matrix-identity._tcp` (use this text as-is)
- Content: `10 0 443 matrix.<your-domain>` (replace `<your-domain>` with your own)
This is an optional feature for the optionally-installed [ma1sd service](configuring-playbook-ma1sd.md). See [ma1sd's documentation](https://github.com/ma1uta/ma1sd/wiki/mxisd-and-your-privacy#choices-are-never-easy) for information on the privacy implications of setting up this SRV record.
Note: This `_matrix-identity._tcp` SRV record for the identity server is different from the `_matrix._tcp` that can be used for Synapse delegation. See [howto-server-delegation.md](howto-server-delegation.md) for more information about delegation.
When you're done with the DNS configuration and ready to proceed, continue with [Getting the playbook](getting-the-playbook.md).
## `_dmarc`, `postmoogle._domainkey` TXT and `matrix` MX records setup
To make the [postmoogle](configuring-playbook-bot-postmoogle.md) email bridge enable its email sending features, you need to configure
SPF (TXT), DMARC (TXT), DKIM (TXT) and MX records

View File

@ -1,4 +1,4 @@
# Setting up matrix-alertmanager-receiver (optional) # Setting up Prometheus Alertmanager integration via matrix-alertmanager-receiver (optional)
The playbook can install and configure the [matrix-alertmanager-receiver](https://github.com/metio/matrix-alertmanager-receiver) service for you. It's a [client](https://prometheus.io/docs/alerting/latest/clients/) for Prometheus' [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/), allowing you to deliver alerts to Matrix rooms. The playbook can install and configure the [matrix-alertmanager-receiver](https://github.com/metio/matrix-alertmanager-receiver) service for you. It's a [client](https://prometheus.io/docs/alerting/latest/clients/) for Prometheus' [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/), allowing you to deliver alerts to Matrix rooms.
@ -8,20 +8,13 @@ At the moment, **setting up this service's bot requires some manual actions** as
This service is meant to be used with an external [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) instance. It's **not** meant to be integrated with the [Prometheus & Grafana stack](./configuring-playbook-prometheus-grafana.md) installed by this playbook, because the Alertmanager component is not installed by it. This service is meant to be used with an external [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) instance. It's **not** meant to be integrated with the [Prometheus & Grafana stack](./configuring-playbook-prometheus-grafana.md) installed by this playbook, because the Alertmanager component is not installed by it.
## Adjusting the playbook configuration
## Configuration To enable matrix-alertmanager-receiver, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yml ```yaml
matrix_alertmanager_receiver_enabled: true matrix_alertmanager_receiver_enabled: true
# This exposes matrix-alertmanager-receiver on the `matrix.` domain.
# Adjust, if necessary.
matrix_alertmanager_receiver_hostname: "{{ matrix_server_fqn_matrix }}"
# This exposes matrix-alertmanager-receiver under a path prefix containing a random (secret) value.
# Adjust the `RANDOM_VALUE_HERE` part with a long and secure value.
matrix_alertmanager_receiver_path_prefix: /matrix-alertmanager-receiver-RANDOM_VALUE_HERE
# If you'd like to change the username for this bot, uncomment and adjust. Otherwise, remove. # If you'd like to change the username for this bot, uncomment and adjust. Otherwise, remove.
# matrix_alertmanager_receiver_config_matrix_user_id_localpart: "bot.alertmanager.receiver" # matrix_alertmanager_receiver_config_matrix_user_id_localpart: "bot.alertmanager.receiver"
@ -32,16 +25,37 @@ matrix_alertmanager_receiver_config_matrix_access_token: ''
# Optionally, configure some mappings (URL-friendly room name -> actual Matrix room ID). # Optionally, configure some mappings (URL-friendly room name -> actual Matrix room ID).
# #
# If you don't configure mappings, you can still deliver alerts using URLs like this: # If you don't configure mappings, you can still deliver alerts using URLs like this:
# https://matrix.DOMAIN/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/!some-room-id:example.com # https://matrix.example.com/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/!qporfwt:example.com
# #
# If a mapping like the one below is configured, you can deliver alerts using friendlier URLs like this: # If a mapping like the one below is configured, you can deliver alerts using friendlier URLs like this:
# https://matrix.DOMAIN/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/some-room-name # https://matrix.example.com/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/some-room-name
matrix_alertmanager_receiver_config_matrix_room_mapping: matrix_alertmanager_receiver_config_matrix_room_mapping:
some-room-name: "!some-room-id:{{ matrix_domain }}" some-room-name: "!qporfwt:{{ matrix_domain }}"
``` ```
See `roles/custom/matrix-alertmanager-receiver/defaults/main.yml` for additional configuration variables. See `roles/custom/matrix-alertmanager-receiver/defaults/main.yml` for additional configuration variables.
### Adjusting the matrix-alertmanager-receiver URL
By default, this playbook installs matrix-alertmanager-receiver on the `matrix.` subdomain, at the `/matrix-alertmanager-receiver` path (https://matrix.example.com/matrix-alertmanager-receiver). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
By tweaking the `matrix_alertmanager_receiver_hostname` and `matrix_alertmanager_receiver_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname and path prefix
matrix_alertmanager_receiver_hostname: alertmanager.example.com
matrix_alertmanager_receiver_path_prefix: /
```
## Adjusting DNS records
If you've changed the default hostname, **you may need to adjust your DNS** records to point the matrix-alertmanager-receiver domain to the Matrix server.
See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to use the default hostname, you won't need to do any extra DNS configuration.
## Account and room preparation ## Account and room preparation
@ -53,25 +67,34 @@ The playbook can automatically create users, but it cannot automatically obtain
2. [Obtain an access token](obtaining-access-tokens.md) for the bot's user account 2. [Obtain an access token](obtaining-access-tokens.md) for the bot's user account
3. Invite the bot to a room where you'd like to alerts to be delivered 3. Invite the bot to a room where you'd like to alerts to be delivered
4. Log in as the bot using any Matrix client of your choosing, accept the room invitation from the bot's account and log out 4. Log in as the bot using any Matrix client of your choosing, accept the room invitation from the bot's account and log out
5. (Optionally) Adjust `matrix_alertmanager_receiver_config_matrix_room_mapping` to create a mapping between the new room and its id 5. (Optionally) Adjust `matrix_alertmanager_receiver_config_matrix_room_mapping` to create a mapping between the new room and its ID
Steps 1 and 2 above only need to be done once, while preparing your [configuration](#configuration). Steps 1 and 2 above only need to be done once, while preparing your [configuration](#adjusting-the-playbook-configuration).
Steps 3 and 4 need to be done for each new room you'd like the bot to deliver alerts to. Step 5 is optional and provides cleaner `/alert/` URLs. Steps 3 and 4 need to be done for each new room you'd like the bot to deliver alerts to. Step 5 is optional and provides cleaner `/alert/` URLs.
## Installing
## Installation Now that you've [prepared the bot account and room](#account-and-room-preparation), [configured the playbook](#adjusting-the-playbook-configuration), and potentially [adjusted your DNS records](#adjusting-dns-records), you can run the playbook with [playbook tags](playbook-tags.md) as below:
Now that you've [prepared the bot account and room](#account-and-room-preparation) and have [configured the playbook](#configuration), you can re-run the [installation](./installing.md) process (`just install-all`). <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
Then, you can proceed to [Usage](#usage). **Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Configure your Prometheus Alertmanager with configuration like this: Configure your Prometheus Alertmanager with configuration like this:
```yml ```yaml
receivers: receivers:
- name: matrix - name: matrix
webhook_configs: webhook_configs:
@ -88,6 +111,6 @@ route:
- receiver: matrix - receiver: matrix
``` ```
.. where `URL_HERE` looks like `https://matrix.DOMAIN/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/some-room-name` or `https://matrix.DOMAIN/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/!some-room-id:DOMAIN`. .. where `URL_HERE` looks like `https://matrix.example.com/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/some-room-name` or `https://matrix.example.com/matrix-alertmanager-receiver-RANDOM_VALUE_HERE/alert/!qporfwt:example.com`.
This bot does **not** accept room invitations automatically (like many other bots do). To deliver messages to rooms, **the bot must be joined to all rooms manually** - see Step 5 of the [Account and room preparation](#account-and-room-preparation) section. This bot does **not** accept room invitations automatically (like many other bots do). To deliver messages to rooms, **the bot must be joined to all rooms manually** - see Step 4 of the [Account and room preparation](#account-and-room-preparation) section.

View File

@ -6,10 +6,31 @@ This is useful for performing [double-puppeting](https://docs.mau.fi/bridges/gen
Previously, bridges supported performing [double-puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) with the help of the [Shared Secret Auth password provider module](./configuring-playbook-shared-secret-auth.md), but this old and hacky solution has been superseded by this Appservice Double Puppet method. Previously, bridges supported performing [double-puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) with the help of the [Shared Secret Auth password provider module](./configuring-playbook-shared-secret-auth.md), but this old and hacky solution has been superseded by this Appservice Double Puppet method.
To enable the Appservice Double Puppet service, adjust your `vars.yml` configuration like this and [re-run the playbook](./installing.md) (`just install-all`): ## Adjusting the playbook configuration
```yml To enable the Appservice Double Puppet service, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_appservice_double_puppet_enabled: true matrix_appservice_double_puppet_enabled: true
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
When enabled, double puppeting will automatically be enabled for all bridges that support double puppeting via the appservice method. When enabled, double puppeting will automatically be enabled for all bridges that support double puppeting via the appservice method.

View File

@ -4,7 +4,6 @@ The playbook can install and configure the [Draupnir](https://github.com/the-dra
Appservice mode can be used together with the regular [Draupnir bot](configuring-playbook-bot-draupnir.md) or independently. Details about the differences between the 2 modes are described below. Appservice mode can be used together with the regular [Draupnir bot](configuring-playbook-bot-draupnir.md) or independently. Details about the differences between the 2 modes are described below.
## Draupnir Appservice mode compared to Draupnir bot mode ## Draupnir Appservice mode compared to Draupnir bot mode
The administrative functions for managing the appservice are alpha quality and very limited. However, the experience of using an appservice-provisioned Draupnir is on par with the experience of using Draupnir from bot mode except in the case of avatar customisation as described later on in this document. The administrative functions for managing the appservice are alpha quality and very limited. However, the experience of using an appservice-provisioned Draupnir is on par with the experience of using Draupnir from bot mode except in the case of avatar customisation as described later on in this document.
@ -13,21 +12,19 @@ Draupnir for all is the way to go if you need more than 1 Draupnir instance, but
Draupnir for all in the playbook is rate-limit-exempt automatically as its appservice configuration file does not specify any rate limits. Draupnir for all in the playbook is rate-limit-exempt automatically as its appservice configuration file does not specify any rate limits.
Normal Draupnir does come with the benefit of access to Synapse Admin features. You are also able to more easily customise your normal Draupnir than D4A as D4A even on the branch with the Avatar command (To be Upstreamed to Mainline Draupnir) that command is clunky as it requires the use of things like Element devtools. In normal draupnir this is a quick operation where you login to Draupnir with a normal client and set Avatar and Display name normally. Normal Draupnir does come with the benefit of access to Synapse Admin features. You are also able to more easily customise your normal Draupnir than D4A as D4A even on the branch with the Avatar command (To be Upstreamed to Mainline Draupnir) that command is clunky as it requires the use of things like Element Web devtools. In normal Draupnir this is a quick operation where you login to Draupnir with a normal client and set Avatar and Display name normally.
Draupnir for all does not support external tooling like [MRU](https://mru.rory.gay) as it can't access Draupnir's user account. Draupnir for all does not support external tooling like [MRU](https://mru.rory.gay) as it can't access Draupnir's user account.
## Installation ## Installation
### 1. Create a main management room. ### 1. Create a main management room.
The playbook does not create a management room for your Main Draupnir. This task you have to do on your own. The playbook does not create a management room for your Main Draupnir. This task you have to do on your own.
The management room has to be given an alias and be public when you are setting up the bot for the first time as the bot does not differentiate between invites The management room has to be given an alias and be public when you are setting up the bot for the first time as the bot does not differentiate between invites and invites to the management room.
and invites to the management room.
This management room is used to control who has access to your D4A deployment. The room stores this data inside of the control room state so your bot must have sufficient powerlevel to send custom state events. This is default 50 or moderator as Element calls this powerlevel. This management room is used to control who has access to your D4A deployment. The room stores this data inside of the control room state so your bot must have sufficient powerlevel to send custom state events. This is default 50 or moderator as Element clients call this powerlevel.
As noted in the Draupnir install instructions the control room is sensitive. The following is said about the control room in the Draupnir install instructions. As noted in the Draupnir install instructions the control room is sensitive. The following is said about the control room in the Draupnir install instructions.
>Anyone in this room can control the bot so it is important that you only invite trusted users to this room. The room must be unencrypted since the playbook does not support installing Pantalaimon yet. >Anyone in this room can control the bot so it is important that you only invite trusted users to this room. The room must be unencrypted since the playbook does not support installing Pantalaimon yet.
@ -38,7 +35,7 @@ Give the room from step 1 an alias. This alias can be anything you want and its
### 3. Adjusting the playbook configuration. ### 3. Adjusting the playbook configuration.
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
You must replace `ALIAS_FROM_STEP_2_GOES_HERE` with the alias you created in step 2. You must replace `ALIAS_FROM_STEP_2_GOES_HERE` with the alias you created in step 2.
@ -50,16 +47,24 @@ matrix_appservice_draupnir_for_all_master_control_room_alias: "ALIAS_FROM_STEP_2
### 4. Installing ### 4. Installing
After configuring the playbook, run the [installation](installing.md) command: After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
``` <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
If you made it through all the steps above and your main control room was joined by a user called `@draupnir-main:matrix-homeserver-domain` you have succesfully installed Draupnir for All and can now start using it. If you made it through all the steps above and your main control room was joined by a user called `@draupnir-main:example.com` you have succesfully installed Draupnir for All and can now start using it.
The installation of Draupnir for all in this playbook is very much Alpha quality. Usage-wise, Draupnir for allis almost identical to Draupnir bot mode. The installation of Draupnir for all in this playbook is very much Alpha quality. Usage-wise, Draupnir for allis almost identical to Draupnir bot mode.
@ -69,23 +74,23 @@ Draupnir for all includes several security measures like that it only allows use
The bot requires a powerlevel of 50 in the management room to control who is allowed to use the bot. The bot does currently not say anything if this is true or false. (This is considered a bug and is documented in issue [#297](https://github.com/the-draupnir-project/Draupnir/issues/297)) The bot requires a powerlevel of 50 in the management room to control who is allowed to use the bot. The bot does currently not say anything if this is true or false. (This is considered a bug and is documented in issue [#297](https://github.com/the-draupnir-project/Draupnir/issues/297))
To allow users or whole homeservers you type /plain @draupnir-main:matrix-homeserver-domain allow `target` and target can be either a MXID or a wildcard like `@*:example.com` to allow all users on example.com to register. We use /plain to force the client to not attempt to mess with this command as it can break Wildcard commands especially. To allow users or whole homeservers you type /plain @draupnir-main:example.com allow `target` and target can be either a MXID or a wildcard like `@*:example.com` to allow all users on example.com to register. We use /plain to force the client to not attempt to mess with this command as it can break Wildcard commands especially.
### 2. How to provision a D4A once you are allowed to. ### 2. How to provision a D4A once you are allowed to.
Open a DM with @draupnir-main:matrix-homeserver-domain and if using Element send a message into this DM to finalise creating it. The bot will reject this invite and you will shortly get invited to the Draupnir control room for your newly provisioned Draupnir. From here its just a normal Draupnir experience. Open a DM with @draupnir-main:example.com and if using an Element client send a message into this DM to finalise creating it. The bot will reject this invite and you will shortly get invited to the Draupnir control room for your newly provisioned Draupnir. From here its just a normal Draupnir experience.
Congratulations if you made it all the way here because you now have a fully working Draupnir for all deployment. Congratulations if you made it all the way here because you now have a fully working Draupnir for all deployment.
### Configuration of D4A ### Configuration of D4A
You can refer to the upstream [documentation](https://github.com/the-draupnir-project/Draupnir) for more configuration documentation. Please note that the playbook ships a full copy of the example config that does transfer to provisioned draupnirs in the production-bots.yaml.j2 file in the template directory of the role. You can refer to the upstream [documentation](https://github.com/the-draupnir-project/Draupnir) for more configuration documentation. Please note that the playbook ships a full copy of the example config that does transfer to provisioned Draupnirs in the production-bots.yaml.j2 file in the template directory of the role.
Please note that Config extension does not affect the appservices config as this config is not extensible in current Draupnir anyways. Config extension instead touches the config passed to the Draupnirs that your Appservice creates. So for example below makes all provisioned Draupnirs protect all joined rooms. Please note that Config extension does not affect the appservices config as this config is not extensible in current Draupnir anyways. Config extension instead touches the config passed to the Draupnirs that your Appservice creates. So for example below makes all provisioned Draupnirs protect all joined rooms.
You can configure additional options by adding the `matrix_appservice_draupnir_for_all_extension_yaml` variable to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file. You can configure additional options by adding the `matrix_appservice_draupnir_for_all_extension_yaml` variable to your `inventory/host_vars/matrix.example.com/vars.yml` file.
For example to change draupnir's `protectAllJoinedRooms` option to `true` you would add the following to your `vars.yml` file. For example to change Draupnir's `protectAllJoinedRooms` option to `true` you would add the following to your `vars.yml` file.
```yaml ```yaml
matrix_appservice_draupnir_for_all_extension_yaml: | matrix_appservice_draupnir_for_all_extension_yaml: |

View File

@ -1,41 +1,44 @@
# Setting up borg backup (optional) # Setting up BorgBackup (optional)
The playbook can install and configure [borgbackup](https://www.borgbackup.org/) with [borgmatic](https://torsion.org/borgmatic/) for you. The playbook can install and configure [BorgBackup](https://www.borgbackup.org/) (short: Borg) with [borgmatic](https://torsion.org/borgmatic/) for you.
BorgBackup is a deduplicating backup program with optional compression and encryption.
That means your daily incremental backups can be stored in a fraction of the space and is safe whether you store it at home or on a cloud service.
You will need a remote server where borg will store the backups. There are hosted, borg compatible solutions available, such as [BorgBase](https://www.borgbase.com). BorgBackup is a deduplicating backup program with optional compression and encryption. That means your daily incremental backups can be stored in a fraction of the space and is safe whether you store it at home or on a cloud service.
You will need a remote server where BorgBackup will store the backups. There are hosted, BorgBackup compatible solutions available, such as [BorgBase](https://www.borgbase.com).
The backup will run based on `backup_borg_schedule` var (systemd timer calendar), default: 4am every day. The backup will run based on `backup_borg_schedule` var (systemd timer calendar), default: 4am every day.
By default, if you're using the integrated Postgres database server (as opposed to [an external Postgres server](configuring-playbook-external-postgres.md)), Borg backups will also include dumps of your Postgres database. An alternative solution for backing up the Postgres database is [postgres backup](configuring-playbook-postgres-backup.md). If you decide to go with another solution, you can disable Postgres-backup support for Borg using the `backup_borg_postgresql_enabled` variable. By default, if you're using the integrated Postgres database server (as opposed to [an external Postgres server](configuring-playbook-external-postgres.md)), backups with BorgBackup will also include dumps of your Postgres database. An alternative solution for backing up the Postgres database is [postgres backup](configuring-playbook-postgres-backup.md). If you decide to go with another solution, you can disable Postgres-backup support for BorgBackup using the `backup_borg_postgresql_enabled` variable.
**Note**: the component is not managed by this repository but its [own repository](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg).
## Prerequisites ## Prerequisites
1. Create a new SSH key: 1. If you do not disable Postgres-backup support, make sure that the Postgres version of your homeserver's database is compatible with borgmatic.
```bash 2. Create a new SSH key:
ssh-keygen -t ed25519 -N '' -f matrix-borg-backup -C matrix
```
This can be done on any machine and you don't need to place the key in the `.ssh` folder. It will be added to the Ansible config later. ```sh
ssh-keygen -t ed25519 -N '' -f matrix-borg-backup -C matrix
```
2. Add the **public** part of this SSH key (the `matrix-borg-backup.pub` file) to your borg provider/server: This can be done on any machine and you don't need to place the key in the `.ssh` folder. It will be added to the Ansible config later.
If you plan to use a hosted solution, follow their instructions. If you have your own server, copy the key over: 3. Add the **public** part of this SSH key (the `matrix-borg-backup.pub` file) to your BorgBackup provider/server:
```bash If you plan to use a hosted solution, follow their instructions. If you have your own server, copy the key over:
# example to append the new PUBKEY contents, where:
# PUBKEY is path to the public key, ```sh
# USER is a ssh user on a provider / server # example to append the new PUBKEY contents, where:
# HOST is a ssh host of a provider / server # PUBKEY is path to the public key,
cat PUBKEY | ssh USER@HOST 'dd of=.ssh/authorized_keys oflag=append conv=notrunc' # USER is a ssh user on a provider / server
``` # HOST is a ssh host of a provider / server
cat PUBKEY | ssh USER@HOST 'dd of=.ssh/authorized_keys oflag=append conv=notrunc'
```
## Adjusting the playbook configuration ## Adjusting the playbook configuration
Minimal working configuration (`inventory/host_vars/matrix.DOMAIN/vars.yml`) to enable borg backup: Minimal working configuration (`inventory/host_vars/matrix.example.com/vars.yml`) to enable BorgBackup:
```yaml ```yaml
backup_borg_enabled: true backup_borg_enabled: true
@ -56,7 +59,7 @@ where:
* USER - SSH user of a provider/server * USER - SSH user of a provider/server
* HOST - SSH host of a provider/server * HOST - SSH host of a provider/server
* REPO - borg repository name, it will be initialized on backup start, eg: `matrix`, regarding Syntax see [Remote repositories](https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls) * REPO - BorgBackup repository name, it will be initialized on backup start, eg: `matrix`, regarding Syntax see [Remote repositories](https://borgbackup.readthedocs.io/en/stable/usage/general.html#repository-urls)
* PASSPHRASE - passphrase used for encrypting backups, you may generate it with `pwgen -s 64 1` or use any password manager * PASSPHRASE - passphrase used for encrypting backups, you may generate it with `pwgen -s 64 1` or use any password manager
* PRIVATE KEY - the content of the **private** part of the SSH key you created before. The whole key (all of its belonging lines) under `backup_borg_ssh_key_private` needs to be indented with 2 spaces * PRIVATE KEY - the content of the **private** part of the SSH key you created before. The whole key (all of its belonging lines) under `backup_borg_ssh_key_private` needs to be indented with 2 spaces
@ -64,18 +67,21 @@ To backup without encryption, add `backup_borg_encryption: 'none'` to your vars.
`backup_borg_location_source_directories` defines the list of directories to back up: it's set to `{{ matrix_base_data_path }}` by default, which is the base directory for every service's data, such as Synapse, Postgres and the bridges. You might want to exclude certain directories or file patterns from the backup using the `backup_borg_location_exclude_patterns` variable. `backup_borg_location_source_directories` defines the list of directories to back up: it's set to `{{ matrix_base_data_path }}` by default, which is the base directory for every service's data, such as Synapse, Postgres and the bridges. You might want to exclude certain directories or file patterns from the backup using the `backup_borg_location_exclude_patterns` variable.
Check the [backup_borg role](https://gitlab.com/etke.cc/roles/backup_borg)'s [defaults/main.yml](https://gitlab.com/etke.cc/roles/backup_borg/-/blob/main/defaults/main.yml) file for the full list of available options. Check the [backup_borg role](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg)'s [defaults/main.yml](https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg/blob/main/defaults/main.yml) file for the full list of available options.
## Installing ## Installing
After configuring the playbook, run the [installation](installing.md) command again: After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
``` <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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.
## Manually start a backup ## Manually start a backup
For testing your setup it can be helpful to not wait until 4am. If you want to run the backup immediately, log onto the server For testing your setup it can be helpful to not wait until 4am. If you want to run the backup immediately, log onto the server and run `systemctl start matrix-backup-borg`. This will not return until the backup is done, so possibly a long time. Consider using [tmux](https://en.wikipedia.org/wiki/Tmux) if your SSH connection is unstable.
and run `systemctl start matrix-backup-borg`. This will not return until the backup is done, so possibly a long time.
Consider using [tmux](https://en.wikipedia.org/wiki/Tmux) if your SSH connection is unstable.

View File

@ -1,10 +1,15 @@
# Serving the base domain # Serving the base domain (optional)
This playbook sets up services on your Matrix server (`matrix.DOMAIN`). By default, this playbook sets up services on your Matrix server (`matrix.example.com`), but has it configured so that it presents itself as the base domain (`example.com`). To have this server officially be responsible for Matrix services for the base domain (`example.com`), you need to set up server delegation / redirection.
To have this server officially be responsible for Matrix services for the base domain (`DOMAIN`), you need to set up [Server Delegation](howto-server-delegation.md).
This is normally done by [configuring well-known](configuring-well-known.md) files on the base domain.
People who don't have a separate server to dedicate to the base domain have trouble arranging this. As we discuss in [Server Delegation](howto-server-delegation.md), server delegation / redirection can be configured in either of these ways:
- Setting up a `/.well-known/matrix/server` file on the base domain (`example.com`)
- Setting up a `_matrix._tcp` DNS SRV record
For simplicity reasons, this playbook recommends you to set up server delegation via a `/.well-known/matrix/server` file.
However, those who don't have a separate server to dedicate to the base domain have trouble arranging this.
Usually, there are 2 options: Usually, there are 2 options:
@ -14,7 +19,7 @@ Usually, there are 2 options:
This documentation page tells you how to do the latter. With some easy changes, we make it possible to serve the base domain from the Matrix server via the integrated webserver. This documentation page tells you how to do the latter. With some easy changes, we make it possible to serve the base domain from the Matrix server via the integrated webserver.
Just **adjust your DNS records**, so that your base domain is pointed to the Matrix server's IP address (using a DNS `A` record) **and then use the following configuration**: Just [**adjust your DNS records**](configuring-dns.md), so that your base domain is pointed to the Matrix server's IP address (using a DNS `A` record) **and then add the following configuration** to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_static_files_container_labels_base_domain_enabled: true matrix_static_files_container_labels_base_domain_enabled: true
@ -24,15 +29,13 @@ Doing this, the playbook will:
- obtain an SSL certificate for the base domain, just like it does for all other domains (see [how we handle SSL certificates](configuring-playbook-ssl-certificates.md)) - obtain an SSL certificate for the base domain, just like it does for all other domains (see [how we handle SSL certificates](configuring-playbook-ssl-certificates.md))
- serve the `/.well-known/matrix/*` files which are necessary for [Federation Server Discovery](configuring-well-known.md#introduction-to-client-server-discovery) (also see [Server Delegation](howto-server-delegation.md)) and [Client-Server discovery](configuring-well-known.md#introduction-to-client-server-discovery) - serve the `/.well-known/matrix/*` files which are necessary for [Federation Server Discovery](configuring-well-known.md#federation-server-discovery) (also see [Server Delegation](howto-server-delegation.md)) and [Client-Server discovery](configuring-well-known.md#client-server-discovery)
- serve a simple homepage at `https://DOMAIN` with content `Hello from DOMAIN` (configurable via the `matrix_static_files_file_index_html_template` variable). You can also [serve a more complicated static website](#serving-a-static-website-at-the-base-domain).
- serve a simple homepage at `https://example.com` with content `Hello from example.com` (configurable via the `matrix_static_files_file_index_html_template` variable). You can also [serve a more complicated static website](#serving-a-static-website-at-the-base-domain).
## Serving a static website at the base domain ## Serving a static website at the base domain
By default, when "serving the base domain" is enabled, the playbook hosts a simple `index.html` webpage at `/matrix/static-files/public/index.html`. By default, when "serving the base domain" is enabled, the playbook hosts a simple `index.html` webpage at `/matrix/static-files/public/index.html`. The content of this page is taken from the `matrix_static_files_file_index_html_template` variable.
The content of this page is taken from the `matrix_static_files_file_index_html_template` variable.
If you'd like to host your own static website (more than a single `index.html` page) at the base domain, you can disable the creation of this default `index.html` page like this: If you'd like to host your own static website (more than a single `index.html` page) at the base domain, you can disable the creation of this default `index.html` page like this:
@ -43,16 +46,14 @@ matrix_static_files_container_labels_base_domain_enabled: true
# Prevent the default index.html file from being installed # Prevent the default index.html file from being installed
matrix_static_files_file_index_html_enabled: false matrix_static_files_file_index_html_enabled: false
# Disable the automatic redirectin of `https://DOMAIN/` to `https://matrix.DOMAIN/`. # Disable the automatic redirectin of `https://example.com/` to `https://matrix.example.com/`.
# This gets automatically enabled when you disable `matrix_static_files_file_index_html_enabled`, as we're doing above. # This gets automatically enabled when you disable `matrix_static_files_file_index_html_enabled`, as we're doing above.
matrix_static_files_container_labels_base_domain_root_path_redirection_enabled: false matrix_static_files_container_labels_base_domain_root_path_redirection_enabled: false
``` ```
With this configuration, Ansible will no longer mess around with the `/matrix/static-files/public/index.html` file. With this configuration, Ansible will no longer mess around with the `/matrix/static-files/public/index.html` file.
You are then free to upload any static website files to `/matrix/static-files/public` and they will get served at the base domain. You are then free to upload any static website files to `/matrix/static-files/public` and they will get served at the base domain. You can do so manually or by using the [ansible-role-aux](https://github.com/mother-of-all-self-hosting/ansible-role-aux) Ansible role, which is part of this playbook already.
You can do so manually or by using the [ansible-role-aux](https://github.com/mother-of-all-self-hosting/ansible-role-aux) Ansible role, which is part of this playbook already.
## Serving a more complicated website at the base domain ## Serving a more complicated website at the base domain
@ -65,7 +66,7 @@ You have 2 options.
- [configuring Matrix Delegation via well-known](./configuring-well-known.md) - [configuring Matrix Delegation via well-known](./configuring-well-known.md)
**Another way is to serve the base domain from another (your own) container on the Matrix server**. This involves: **Another way is to serve the base domain from another (your own) container on the Matrix server**. This involves:
- telling the playbook to only serve `BASE_DOMAIN/.well-known/matrix` files by adjusting your `vars.yml` configuration like this: - telling the playbook to only serve `example.com/.well-known/matrix` files by adjusting your `vars.yml` configuration like this:
- keep `matrix_static_files_container_labels_base_domain_enabled: true` - keep `matrix_static_files_container_labels_base_domain_enabled: true`
- add an extra: `matrix_static_files_container_labels_base_domain_traefik_path_prefix: /.well-known/matrix` - add an extra: `matrix_static_files_container_labels_base_domain_traefik_path_prefix: /.well-known/matrix`
- building and running a new container on the Matrix server: - building and running a new container on the Matrix server:

View File

@ -0,0 +1,420 @@
# Setting up baibot (optional)
<p align="center">
<img src="https://github.com/etkecc/baibot/raw/main/etc/assets/baibot.svg" alt="baibot logo" width="150" />
<h1 align="center">baibot</h1>
</p>
🤖 [baibot](https://github.com/etkecc/baibot) (pronounced bye-bot) is a [Matrix](https://matrix.org/) bot developed by [etke.cc](https://etke.cc/) that exposes the power of [AI](https://en.wikipedia.org/wiki/Artificial_intelligence) / [Large Language Models](https://en.wikipedia.org/wiki/Large_language_model) to you. 🤖
It supports [OpenAI](https://openai.com/)'s [ChatGPT](https://openai.com/blog/chatgpt/) models, as many well as other [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md).
It's designed as a more private and [✨ featureful](https://github.com/etkecc/baibot/?tab=readme-ov-file#-features) alternative to [matrix-chatgpt-bot](./configuring-playbook-bot-chatgpt.md). See the [baibot](https://github.com/etkecc/baibot) project and its documentation for more information.
## Prerequisites
API access to one or more LLM [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md).
## Adjusting the playbook configuration
There are **a lot of configuration options** (some required, some possibly required, some optional), so they're **split into multiple sections below**:
<!-- no toc -->
- [Base configuration](#base-configuration)
- [👮‍♂️ Administrator configuration](#-administrator-configuration)
- [👥 Initial users configuration](#-initial-users-configuration)
- [🤖 Configuring agents via Ansible](#-configuring-agents-via-ansible)
- [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers)
Depending on your current `vars.yml` file and desired configuration, **you may require more than just the [base configuration](#base-configuration)**.
### Base configuration
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_bot_baibot_enabled: true
# Uncomment and adjust this part if you'd like to use a username different than the default
# matrix_bot_baibot_config_user_mxid_localpart: baibot
# Generate a strong password here. Consider generating it with `pwgen -s 64 1`.
# If you'd like to change this password subsequently, see the details below.
matrix_bot_baibot_config_user_password: 'PASSWORD_FOR_THE_BOT'
# An optional passphrase to use for backing up and recovering the bot's encryption keys.
# You can put any string here, but generating a strong one is preferred (e.g. `pwgen -s 64 1`).
#
# If set to null, the recovery module will not be used and losing your session/database
# will mean you lose access to old messages in encrypted room.
# It's highly recommended that you configure this to avoid losing access to encrypted messages.
#
# Changing this subsequently will also cause you to lose access to old messages in encrypted rooms.
# For details about changing this subsequently or resetting, see `defaults/main.yml` in the baibot role.
matrix_bot_baibot_config_user_encryption_recovery_passphrase: 'ANY_LONG_AND_SECURE_PASSPHRASE_STRING_HERE'
# An optional secret for encrypting the bot's session data (see `matrix_bot_baibot_data_path`).
# This must be 32-bytes (64 characters when HEX-encoded).
# Generate it with: `openssl rand -hex 32`
# Set to null or empty to avoid using encryption.
# Changing this subsequently requires that you also throw away all data (see `matrix_bot_baibot_data_path`)
matrix_bot_baibot_config_persistence_session_encryption_key: 'A_HEX_STRING_OF_64_CHARACTERS_HERE'
# An optional secret for encrypting bot configuration stored in Matrix's account data.
# This must be 32-bytes (64 characters when HEX-encoded).
# Generate it with: `openssl rand -hex 32`
# Set to null or empty to avoid using encryption.
# Changing this subsequently will make you lose your configuration.
matrix_bot_baibot_config_persistence_config_encryption_key: 'A_HEX_STRING_OF_64_CHARACTERS_HERE'
```
As mentioned above, **this may not be enough**. Continue with the configuration sections below.
### 👮‍♂️ Administrator configuration
This is an addition to the [base configuration](#base-configuration).
To specify who is considered a bot [👮‍♂️ Administrator](https://github.com/etkecc/baibot/blob/main/docs/access.md#administrators), you either need to specify `matrix_bot_baibot_config_access_admin_patterns` or `matrix_admin`. The latter is a single variable which affects all bridges and bots.
If `matrix_admin` is already configured in your `vars.yml` configuration, you can skip this section.
**If necessary**, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Uncomment to add one or more admins to this bridge:
#
# matrix_bot_baibot_config_access_admin_patterns:
# - "@*:example.com"
# - "@admin:example.net"
#
# .. unless you've made yourself an admin of all bots/bridges like this:
#
# matrix_admin: '@yourAdminAccount:{{ matrix_domain }}'
```
### 👥 Initial users configuration
By default, **all users on your homeserver are considered allowed users**. If that's OK, you can skip this section.
This is an addition to the [base configuration](#base-configuration).
To specify who is considered a bot [👥 User](https://github.com/etkecc/baibot/blob/main/docs/access.md#user), you may:
- define an **initial** value for `matrix_bot_baibot_config_initial_global_config_user_patterns` Ansible variable, as shown below
- configure the list at runtime via the bot's `!bai access set-users SPACE_SEPARATED_PATTERNS` command
Configuring `matrix_bot_baibot_config_initial_global_config_user_patterns` is optional, but it can be useful to pre-configure the bot with a list of users who should have access to the bot's features.
**Note**: Once initially configured, the allowed users list **cannot be managed via Ansible anymore**. It can only be managed subsequently via bot commands.
**If necessary**, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Uncomment and adjust the bot users if necessary:
#
# Subsequent changes to `matrix_bot_baibot_config_initial_global_config_user_patterns` do not affect the bot's behavior.
# Once initially configured, the allowed users list is managed via bot commands, not via Ansible.
#
# matrix_bot_baibot_config_initial_global_config_user_patterns:
# - "@*:{{ matrix_bot_baibot_config_homeserver_server_name }}"
```
### 🤖 Configuring agents via Ansible
You are **not required** to define agents [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration) via Ansible. **To get started quickly**, you can **skip this section and define agents at runtime via chat commands** (following the bot's guidance).
Privileged users (like the [👮‍♂️ Administrator](#-administrator-configuration), but potentially others too - see the upstream [🔒 access](https://github.com/etkecc/baibot/blob/main/docs/access.md) documentation) can **define agents dynamically at any time** via chat commands.
The Ansible role includes preset variables for easily enabling some [🤖 agents](https://github.com/etkecc/baibot/blob/main/docs/agents.md) on various [☁️ providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md) (e.g. OpenAI, etc).
Besides the presets, the Ansible role also includes support for configuring additional statically-defined agents via the `matrix_bot_baibot_config_agents_static_definitions_custom` Ansible variable.
Agents defined statically and those created dynamically (via chat) are named differently, so **conflict cannot arise**.
Depending on your propensity for [GitOps](https://en.wikipedia.org/wiki/DevOps#GitOps), you may prefer to define agents statically via Ansible, or you may wish to do it dynamically via chat.
Before proceeding, we recommend reading the upstream documentation on [How to choose a provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#how-to-choose-a-provider). In short, it's probably best to go with [OpenAI](#openai).
#### Anthropic
You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [Anthropic provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#anthropic) with the help of the playbook's preset variables.
Here's an example **addition** to your `vars.yml` file:
```yaml
matrix_bot_baibot_config_agents_static_definitions_anthropic_enabled: true
matrix_bot_baibot_config_agents_static_definitions_anthropic_config_api_key: "YOUR_API_KEY_HERE"
# If you'd like to use another text-generation agent, uncomment and adjust:
# matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_model_id: claude-3-5-sonnet-20240620
# The playbook defines a default prompt for all statically-defined agents.
# You can adjust it in the `matrix_bot_baibot_config_agents_static_definitions_prompt` variable,
# or you can adjust it below only for the Anthropic agent.
# matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
# See `defaults/main.yml` in the baibot role for more configuration options.
```
If you'd like to use more than one model, take a look at the [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset) section below.
💡 You may also wish to use this new agent for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers).
#### Groq
You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [Groq provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#groq) with the help of the playbook's preset variables.
Here's an example **addition** to your `vars.yml` file:
```yaml
matrix_bot_baibot_config_agents_static_definitions_groq_enabled: true
matrix_bot_baibot_config_agents_static_definitions_groq_config_api_key: "YOUR_API_KEY_HERE"
# Specify the text-generation agent you'd like to use
matrix_bot_baibot_config_agents_static_definitions_groq_config_text_generation_model_id: "llama3-70b-8192"
# The playbook defines a default prompt for all statically-defined agents.
# You can adjust it in the `matrix_bot_baibot_config_agents_static_definitions_prompt` variable,
# or you can adjust it below only for the Groq agent.
# matrix_bot_baibot_config_agents_static_definitions_groq_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
# Uncomment and adjust this part if you're not happy with these speech-to-text defaults:
#
# matrix_bot_baibot_config_agents_static_definitions_groq_config_speech_to_text_enabled: true
# matrix_bot_baibot_config_agents_static_definitions_groq_config_speech_to_text_model_id: whisper-large-v3
# See `defaults/main.yml` in the baibot role for more configuration options.
```
Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/groq`.
If you'd like to use more than one model, take a look at the [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset) section below.
💡 You may also wish to use this new agent for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers).
#### Mistral
You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [🇫🇷 Mistral provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#mistral) with the help of the playbook's preset variables.
Here's an example **addition** to your `vars.yml` file:
```yaml
matrix_bot_baibot_config_agents_static_definitions_mistral_enabled: true
matrix_bot_baibot_config_agents_static_definitions_mistral_config_api_key: "YOUR_API_KEY_HERE"
# The playbook defines a default prompt for all statically-defined agents.
# You can adjust it in the `matrix_bot_baibot_config_agents_static_definitions_prompt` variable,
# or you can adjust it below only for the Mistral agent.
# matrix_bot_baibot_config_agents_static_definitions_mistral_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
# Uncomment and adjust this part if you're not happy with these defaults:
# matrix_bot_baibot_config_agents_static_definitions_mistral_config_text_generation_model_id: mistral-large-latest
# See `defaults/main.yml` in the baibot role for more configuration options.
```
Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/mistral`.
If you'd like to use more than one model, take a look at the [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset) section below.
💡 You may also wish to use this new agent for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers).
#### OpenAI
You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [OpenAI provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openai) with the help of the playbook's preset variables.
The OpenAI provider is **only meant to be used with OpenAI's official API** and compatibility with other services (which do not fully adhere to the OpenAI API spec completely) is limited. **If you're targeting an OpenAI-compatible service**, use the [OpenAI Compatible](#openai-compatible) provider instead.
Here's an example **addition** to your `vars.yml` file:
```yaml
matrix_bot_baibot_config_agents_static_definitions_openai_enabled: true
matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key: "YOUR_API_KEY_HERE"
# The playbook defines a default prompt for all statically-defined agents.
# You can adjust it in the `matrix_bot_baibot_config_agents_static_definitions_prompt` variable,
# or you can adjust it below only for the OpenAI agent.
# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
# If you'd like to use another text-generation agent, uncomment and adjust:
# matrix_bot_baibot_config_agents_static_definitions_openai_config_text_generation_model_id: gpt-4o
# See `defaults/main.yml` in the baibot role for more configuration options.
```
Because this is a [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agent, it will be given a `static/` ID prefix and will be named `static/openai`.
If you'd like to use more than one model, take a look at the [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset) section below.
💡 You may also wish to use this new agent for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers).
#### OpenAI Compatible
You can statically-define a single [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md) instance powered by the [OpenAI Compatible provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openai-compatible) with the help of the playbook's preset variables.
This provider allows you to use OpenAI-compatible API services like [OpenRouter](https://github.com/etkecc/baibot/blob/main/docs/providers.md#openrouter), [Together AI](https://github.com/etkecc/baibot/blob/main/docs/providers.md#together-ai), etc.
Some of these popular services already have **shortcut** providers (see [supported providers](https://github.com/etkecc/baibot/blob/main/docs/providers.md#supported-providers) leading to this one behind the scenes - this make it easier to get started.
As of this moment, the playbook does not include presets for any of these services, so you'll need to [Configuring additional agents (without a preset)](#configuring-additional-agents-without-a-preset).
#### Configuring additional agents (without a preset)
The Ansible role may be lacking preset variables for some [☁️ provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md), or you may wish to statically-define an agent on the same provider twice (or more) with different configuration.
It's possible to inject your own agent configuration using the `matrix_bot_baibot_config_agents_static_definitions_custom` Ansible variable.
You can also define providers at runtime, by chatting with the bot, so using Ansible is not a requirement.
Below is an an **example** demonstrating **statically-defining agents via Ansible without using presets**:
```yaml
matrix_bot_baibot_config_agents_static_definitions_custom:
# This agent will use the GPT 3.5 model and will only support text-generation,
# even though the `openai` provider could support other features (e.g. image-generation).
- id: my-openai-gpt-3.5-turbo-agent
provider: openai
config:
base_url: https://api.openai.com/v1
api_key: "YOUR_API_KEY_HERE"
text_generation:
model_id: gpt-3.5-turbo-0125
prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
temperature: 1.0
max_response_tokens: 4096
max_context_tokens: 16385
speech_to_text: null
text_to_speech: null
image_generation: null
# This agent uses the `openai` provider, but adjusts the base URL, so that it points to some Ollama instance
# (which supports an OpenAI-compatible API).
- id: my-ollama-agent
provider: openai
config:
base_url: http://ollama-service:1234/v1
api_key: ""
text_generation:
model_id: "llama3.1:8b"
prompt: "{{ matrix_bot_baibot_config_agents_static_definitions_prompt }}"
temperature: 1.0
max_response_tokens: 4096
max_context_tokens: 128000
speech_to_text: null
text_to_speech: null
image_generation: null
```
Because these are [statically](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md#static-configuration)-defined agents, they will be given a `static/` ID prefix and will be named `static/my-openai-gpt-3.5-turbo-agent` and `static/my-ollama-agent`, respectively.
💡 To figure out what to put in the `config` section, refer to the [☁️ provider](https://github.com/etkecc/baibot/blob/main/docs/providers.md) page, which contains **sample configuration YAML for each provider**.
As with any [🤖 agent](https://github.com/etkecc/baibot/blob/main/docs/agents.md), defining them means they exist. To actually make use of them, they need to be configured as handlers globally or in a specific room - see [Mixing & matching models](https://github.com/etkecc/baibot/blob/main/docs/features.md#mixing--matching-models).
💡 You may also wish to use these new agents for [🤝 Configuring initial default handlers](#-configuring-initial-default-handlers).
### 🤝 Configuring initial default handlers
This section is only useful if you're [🤖 Configuring agents via Ansible](#-configuring-agents-via-ansible), as it lets you put these agents to use as soon as the bot starts (by adjusting the bot's **initial global configuration**).
If you're not configuring agents via Ansible, you can skip this section.
This section is only useful the first time around. **Once initially configured the global configuration cannot be managed Ansible**, but only via bot commands.
baibot supports [various purposes](https://github.com/etkecc/baibot/blob/main/docs/features.md):
- [💬 text-generation](https://github.com/etkecc/baibot/blob/main/docs/features.md#-text-generation): communicating with you via text
- [🦻 speech-to-text](https://github.com/etkecc/baibot/blob/main/docs/features.md#-speech-to-text): turning your voice messages into text
- [🗣️ text-to-speech](https://github.com/etkecc/baibot/blob/main/docs/features.md#-text-to-speech): turning bot or users text messages into voice messages
- [🖌️ image-generation](https://github.com/etkecc/baibot/blob/main/docs/features.md#-image-generation): generating images based on instructions
- ❓ catch-all: special purposes, indicating use as a fallback (when no specific handler is configured)
[Mixing & matching models](https://github.com/etkecc/baibot/blob/main/docs/features.md#mixing--matching-models) is made possible by the bot's ability to have different [🤝 handlers](https://github.com/etkecc/baibot/blob/main/docs/configuration/handlers.md) configured for different purposes.
This configuration can be done as a global fallback, or per-room. Both of these [🛠️ configurations](https://github.com/etkecc/baibot/blob/main/docs/configuration/README.md) are managed at runtime (viat chat), but **the global configuration can have some initial defaults configured via Ansible**.
You can configure the **initial values** for these via Ansible, via the `matrix_bot_baibot_config_initial_global_config_handler_*` variables.
Example **additional** `vars.yml` configuration:
```yaml
# Note: these are initial defaults for the bot's global configuration.
# As such, changing any of these values subsequently has no effect on the bot's behavior.
# Once initially configured, the global configuration is managed via bot commands, not via Ansible.
matrix_bot_baibot_config_initial_global_config_handler_catch_all: static/openai
# In this example, there's no need to define any of these below.
# Configuring the catch-all purpose handler is enough.
matrix_bot_baibot_config_initial_global_config_handler_text_generation: null
matrix_bot_baibot_config_initial_global_config_handler_text_to_speech: null
matrix_bot_baibot_config_initial_global_config_handler_speech_to_text: null
matrix_bot_baibot_config_initial_global_config_handler_image_generation: null
```
**Note**: these are initial defaults for the bot's global configuration. As such, changing any of these values subsequently has no effect on the bot's behavior. **Once initially configured the global configuration cannot be managed Ansible**, but only via bot commands.
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bot password (`matrix_bot_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password.
## Usage
To use the bot, invite the `@baibot:example.com` bot user into a room.
If you're an allowed bot [👥 user](https://github.com/etkecc/baibot/blob/main/docs/access.md#user) (see [👥 Initial users configuration](#-initial-users-configuration)), the bot will accept your invitation and join the room.
After joining, the bot will introduce itself and show information about the [✨ features](https://github.com/etkecc/baibot/blob/main/docs/features.md) that are enabled for it.
If you've [🤖 configured one or more agents via Ansible](#-configuring-agents-via-ansible) and have [🤝 configured initial default handlers](#configuring-initial-default-handlers), the bot will immediately be able to make use of these agents for this new room. Otherwise, you will need to configure agents and/or handlers via chat commands.
Send `!bai help` to the room at any time to see the bot's help menu for additional commands.
You can also refer to the upstream [baibot](https://github.com/etkecc/baibot) project's documentation.
## Debugging
As with all other services, you can find service logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by running something like `journalctl -fu matrix-bot-baibot`
The default logging level for this service is `info`, but you can increase it to `debug` (or even `trace`) with the following additional configuration:
```yaml
# Adjust the bot's own logging level.
matrix_bot_baibot_config_logging_level_baibot: debug
# Adjust the logging level for the mxlink bot library used by the bot.
matrix_bot_baibot_config_logging_level_mxlink: debug
# Adjust the logging level for other libraries used by the bot.
# Having this set to a value other than "warn" can be very noisy.
matrix_bot_baibot_config_logging_level_other_libs: debug
```
**Alternatively**, you can use a single variable to set the logging level for all of the above (bot + all libraries):
```yaml
matrix_bot_baibot_config_logging: debug
```

View File

@ -1,36 +1,12 @@
# Setting up Buscarron (optional) # Setting up Buscarron (optional)
The playbook can install and configure [buscarron](https://gitlab.com/etke.cc/buscarron) for you. The playbook can install and configure [Buscarron](https://github.com/etkecc/buscarron) for you.
Buscarron is bot that receives HTTP POST submissions of web forms and forwards them to a Matrix room. Buscarron is bot that receives HTTP POST submissions of web forms and forwards them to a Matrix room.
## Decide on a domain and path
By default, Buscarron is configured to use its own dedicated domain (`buscarron.DOMAIN`) and requires you to [adjust your DNS records](#adjusting-dns-records).
You can override the domain and path like this:
```yaml
# Switch to the domain used for Matrix services (`matrix.DOMAIN`),
# so we won't need to add additional DNS records for Buscarron.
matrix_bot_buscarron_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /buscarron subpath
matrix_bot_buscarron_path_prefix: /buscarron
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Buscarron domain to the Matrix server.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Adjusting the playbook configuration ## Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file: To enable Buscarron, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_bot_buscarron_enabled: true matrix_bot_buscarron_enabled: true
@ -43,9 +19,9 @@ matrix_bot_buscarron_password: PASSWORD_FOR_THE_BOT
# Adjust accepted forms # Adjust accepted forms
matrix_bot_buscarron_forms: matrix_bot_buscarron_forms:
- name: contact # (mandatory) Your form name, will be used as endpoint, eg: buscarron.DOMAIN/contact - name: contact # (mandatory) Your form name, will be used as endpoint, eg: buscarron.example.com/contact
room: "!yourRoomID:DOMAIN" # (mandatory) Room ID where form submission will be posted room: "!qporfwt:{{ matrix_domain }}" # (mandatory) Room ID where form submission will be posted
redirect: https://DOMAIN # (mandatory) To what page user will be redirected after the form submission redirect: https://example.com # (mandatory) To what page user will be redirected after the form submission
ratelimit: 1r/m # (optional) rate limit of the form, format: <max requests>r/<interval:s,m>, eg: 1r/s or 54r/m ratelimit: 1r/m # (optional) rate limit of the form, format: <max requests>r/<interval:s,m>, eg: 1r/s or 54r/m
hasemail: 1 # (optional) form has "email" field that should be validated hasemail: 1 # (optional) form has "email" field that should be validated
extensions: [] # (optional) list of form extensions (not used yet) extensions: [] # (optional) list of form extensions (not used yet)
@ -53,33 +29,61 @@ matrix_bot_buscarron_forms:
matrix_bot_buscarron_spamlist: [] # (optional) list of emails/domains/hosts (with wildcards support) that should be rejected automatically matrix_bot_buscarron_spamlist: [] # (optional) list of emails/domains/hosts (with wildcards support) that should be rejected automatically
``` ```
### Adjusting the Buscarron URL
By default, this playbook installs Buscarron on the `buscarron.` subdomain (`buscarron.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `matrix_bot_buscarron_hostname` and `matrix_bot_buscarron_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for Buscarron.
matrix_bot_buscarron_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /buscarron subpath
matrix_bot_buscarron_path_prefix: /buscarron
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Buscarron domain to the Matrix server.
By default, you will need to create a CNAME record for `buscarron`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Installing ## Installing
After configuring the playbook, run the [installation](installing.md) command again: 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 ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
**Notes**: **Notes**:
- the `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- if you change the bot password (`matrix_bot_buscarron_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_buscarron_password` to let the bot know its new password - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bot password (`matrix_bot_buscarron_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_buscarron_password` to let the bot know its new password.
## Usage ## Usage
To use the bot, invite the `@bot.buscarron:DOMAIN` to the room you specified in a config, after that any point your form to the form url, example for the `contact` form: To use the bot, invite the `@bot.buscarron:example.com` to the room you specified in a config, after that any point your form to the form url, example for the `contact` form:
```html ```html
<form method="POST" action="https://buscarron.DOMAIN/contact"> <form method="POST" action="https://buscarron.example.com/contact">
<!--your fields--> <!--your fields-->
</form> </form>
``` ```
**NOTE**: to fight against spam, Buscarron is **very aggressive when it comes to banning** and will ban you if: **Note**: to fight against spam, Buscarron is **very aggressive when it comes to banning** and will ban you if:
- if you hit the homepage (HTTP `GET` request to `/`) - if you hit the homepage (HTTP `GET` request to `/`)
- if you submit a form to the wrong URL (`POST` request to `/non-existing-form`) - if you submit a form to the wrong URL (`POST` request to `/non-existing-form`)
@ -87,4 +91,4 @@ To use the bot, invite the `@bot.buscarron:DOMAIN` to the room you specified in
If you get banned, you'd need to restart the process by running the playbook with `--tags=start` or running `systemctl restart matrix-bot-buscarron` on the server. If you get banned, you'd need to restart the process by running the playbook with `--tags=start` or running `systemctl restart matrix-bot-buscarron` on the server.
You can also refer to the upstream [documentation](https://gitlab.com/etke.cc/buscarron). You can also refer to the upstream [documentation](https://github.com/etkecc/buscarron).

View File

@ -1,10 +1,11 @@
# Setting up ChatGPT (optional) # Setting up matrix-bot-chatgpt (optional, unmaintained)
**Note**: [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) is now an archived (**unmaintained**) project. Talking to ChatGPT (and many other LLM providers) can happen via the much more featureful [baibot](https://github.com/etkecc/baibot), which can be installed using [this playbook](configuring-playbook-bot-baibot.md). Consider using that bot instead of this one.
The playbook can install and configure [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) for you. The playbook can install and configure [matrix-chatgpt-bot](https://github.com/matrixgpt/matrix-chatgpt-bot) for you.
Talk to [ChatGPT](https://openai.com/blog/chatgpt/) via your favourite Matrix client! Talk to [ChatGPT](https://openai.com/blog/chatgpt/) via your favourite Matrix client!
## 1. Register the bot account ## 1. Register the bot account
The playbook does not automatically create users for you. The bot requires an access token to be able to connect to your homeserver. The playbook does not automatically create users for you. The bot requires an access token to be able to connect to your homeserver.
@ -15,21 +16,19 @@ Choose a strong password for the bot. You can generate a good password with a co
You can use the playbook to [register a new user](registering-users.md): You can use the playbook to [register a new user](registering-users.md):
``` ```sh
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.chatgpt password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.chatgpt password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user
``` ```
## 2. Get an access token and create encryption keys ## 2. Get an access token and create encryption keys
Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md).
To make sure the bot can read encrypted messages, it will need an encryption key, just like any other new user. While obtaining the access token, follow the prompts to setup a backup key. More information can be found in the [element documentation](https://element.io/help#encryption6). To make sure the bot can read encrypted messages, it will need an encryption key, just like any other new user. While obtaining the access token, follow the prompts to setup a backup key. More information can be found in the [Element documentation](https://element.io/help#encryption6).
## 3. Adjusting the playbook configuration ## 3. Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
matrix_bot_chatgpt_enabled: true matrix_bot_chatgpt_enabled: true
@ -52,18 +51,25 @@ matrix_bot_chatgpt_matrix_bot_prompt_prefix: 'Instructions:\nYou are ChatGPT, a
You will need to get tokens for ChatGPT. You will need to get tokens for ChatGPT.
## 4. Installing ## 4. Installing
After configuring the playbook, run the [installation](installing.md) command again: After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=install-all,start ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
To use the bot, invite the `@bot.chatgpt:DOMAIN` to the room you specified in a config, after that start speaking to it, use the prefix if you configured one or mention the bot. To use the bot, invite the `@bot.chatgpt:example.com` to the room you specified in a config, after that start speaking to it, use the prefix if you configured one or mention the bot.
You can also refer to the upstream [documentation](https://github.com/matrixgpt/matrix-chatgpt-bot). You can also refer to the upstream [documentation](https://github.com/matrixgpt/matrix-chatgpt-bot).

View File

@ -1,12 +1,11 @@
# Setting up draupnir (optional) # Setting up Draupnir (optional)
The playbook can install and configure the [draupnir](https://github.com/the-draupnir-project/Draupnir) moderation bot for you. The playbook can install and configure the [Draupnir](https://github.com/the-draupnir-project/Draupnir) moderation bot for you.
See the project's [documentation](https://github.com/the-draupnir-project/Draupnir) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/the-draupnir-project/Draupnir) to learn what it does and why it might be useful to you.
This documentation page is about installing Draupnir in bot mode. As an alternative, you can run a multi-instance Draupnir deployment by installing [Draupnir in appservice mode](./configuring-playbook-appservice-draupnir-for-all.md) (called Draupnir-for-all) instead. This documentation page is about installing Draupnir in bot mode. As an alternative, you can run a multi-instance Draupnir deployment by installing [Draupnir in appservice mode](./configuring-playbook-appservice-draupnir-for-all.md) (called Draupnir-for-all) instead.
If your migrating from Mjolnir skip to step 5b. If your migrating from Mjolnir skip to step 5b.
## 1. Register the bot account ## 1. Register the bot account
@ -19,27 +18,23 @@ Choose a strong password for the bot. You can generate a good password with a co
You can use the playbook to [register a new user](registering-users.md): You can use the playbook to [register a new user](registering-users.md):
``` ```sh
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.draupnir password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.draupnir password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user
``` ```
If you would like draupnir to be able to deactivate users, move aliases, shutdown rooms, show abuse reports ([see below](#abuse-reports)), etc then it must be a server admin so you need to change `admin=no` to `admin=yes` in the command above. If you would like Draupnir to be able to deactivate users, move aliases, shutdown rooms, show abuse reports ([see below](#abuse-reports)), etc then it must be a server admin so you need to change `admin=no` to `admin=yes` in the command above.
## 2. Get an access token ## 2. Get an access token
Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md).
## 3. Make sure the account is free from rate limiting ## 3. Make sure the account is free from rate limiting
You will need to prevent Synapse from rate limiting the bot's account. This is not an optional step. If you do not do this step draupnir will crash. This can be done using Synapse's [admin API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#override-ratelimiting-for-users). Please ask for help if you are uncomfortable with these steps or run into issues. You will need to prevent Synapse from rate limiting the bot's account. This is not an optional step. If you do not do this step Draupnir will crash. This can be done using Synapse's [admin API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#override-ratelimiting-for-users). Please ask for help if you are uncomfortable with these steps or run into issues.
If your Synapse Admin API is exposed to the internet for some reason like running the Synapse Admin Role [Link](/docs/configuring-playbook-synapse-admin.md) or running `matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true` in your playbook config. If your API is not externally exposed you should still be able to on the local host for your synapse run these commands.
The following command works on semi up to date Windows 10 installs and All Windows 11 installations and other systems that ship curl. `curl --header "Authorization: Bearer <access_token>" -X POST https://matrix.example.com/_synapse/admin/v1/users/@example:example.com/override_ratelimit` Replace `@example:example.com` with the MXID of your Draupnir and example.com with your homeserver domain. You can easily obtain an access token for a homeserver admin account the same way you can obtain an access token for Draupnir it self. If you made Draupnir Admin you can just use the Draupnir token.
If your Synapse Admin API is exposed to the internet for some reason like running the Synapse Admin Role [Link](configuring-playbook-synapse-admin.md) or running `matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true` in your playbook config. If your API is not externally exposed you should still be able to on the local host for your synapse run these commands.
The following command works on semi up to date Windows 10 installs and All Windows 11 installations and other systems that ship curl. `curl --header "Authorization: Bearer <access_token>" -X POST https://matrix.example.com/_synapse/admin/v1/users/@example:example.com/override_ratelimit` Replace `@example:example.com` with the MXID of your Draupnir and example.com with your homeserver domain. You can easily obtain an access token for a homeserver admin account the same way you can obtain an access token for Draupnir itself. If you made Draupnir Admin you can just use the Draupnir token.
## 4. Create a management room ## 4. Create a management room
@ -47,10 +42,9 @@ Using your own account, create a new invite only room that you will use to manag
If you make the management room encrypted (E2EE), then you MUST enable and use Pantalaimon (see below). If you make the management room encrypted (E2EE), then you MUST enable and use Pantalaimon (see below).
Once you have created the room you need to copy the room ID so you can tell the bot to use that room. In Element you can do this by going to the room's settings, clicking Advanced, and then coping the internal room ID. The room ID will look something like `!QvgVuKq0ha8glOLGMG:DOMAIN`. Once you have created the room you need to copy the room ID so you can tell the bot to use that room. In Element Web you can do this by going to the room's settings, clicking Advanced, and then copying the internal room ID. The room ID will look something like `!qporfwt:example.com`.
Finally invite the `@bot.draupnir:DOMAIN` account you created earlier into the room.
Finally invite the `@bot.draupnir:example.com` account you created earlier into the room.
## 5. Adjusting the playbook configuration ## 5. Adjusting the playbook configuration
@ -60,7 +54,7 @@ Decide whether you want Draupnir to be capable of operating in end-to-end encryp
When using Pantalaimon, Draupnir will log in to its bot account itself through Pantalaimon, so configure its username and password. When using Pantalaimon, Draupnir will log in to its bot account itself through Pantalaimon, so configure its username and password.
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
# Enable Pantalaimon. See docs/configuring-playbook-pantalaimon.md # Enable Pantalaimon. See docs/configuring-playbook-pantalaimon.md
@ -82,7 +76,7 @@ matrix_bot_draupnir_management_room: "ROOM_ID_FROM_STEP_4_GOES_HERE"
The playbook's `group_vars` will configure other required settings. If using this role separately without the playbook, you also need to configure the two URLs that Draupnir uses to reach the homeserver, one through Pantalaimon and one "raw". This example is taken from the playbook's `group_vars`: The playbook's `group_vars` will configure other required settings. If using this role separately without the playbook, you also need to configure the two URLs that Draupnir uses to reach the homeserver, one through Pantalaimon and one "raw". This example is taken from the playbook's `group_vars`:
```yaml ```yaml
# Endpoint URL that Draupnir uses to interact with the matrix homeserver (client-server API). # Endpoint URL that Draupnir uses to interact with the Matrix homeserver (client-server API).
# Set this to the pantalaimon URL if you're using that. # Set this to the pantalaimon URL if you're using that.
matrix_bot_draupnir_homeserver_url: "{{ 'http://matrix-pantalaimon:8009' if matrix_bot_draupnir_pantalaimon_use else matrix_addons_homeserver_client_api_url }}" matrix_bot_draupnir_homeserver_url: "{{ 'http://matrix-pantalaimon:8009' if matrix_bot_draupnir_pantalaimon_use else matrix_addons_homeserver_client_api_url }}"
@ -95,7 +89,7 @@ matrix_bot_draupnir_raw_homeserver_url: "{{ matrix_addons_homeserver_client_api_
When NOT using Pantalaimon, Draupnir does not log in by itself and you must give it an access token for its bot account. When NOT using Pantalaimon, Draupnir does not log in by itself and you must give it an access token for its bot account.
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
You must replace `ACCESS_TOKEN_FROM_STEP_2_GOES_HERE` and `ROOM_ID_FROM_STEP_4_GOES_HERE` with the your own values. You must replace `ACCESS_TOKEN_FROM_STEP_2_GOES_HERE` and `ROOM_ID_FROM_STEP_4_GOES_HERE` with the your own values.
@ -109,25 +103,102 @@ matrix_bot_draupnir_management_room: "ROOM_ID_FROM_STEP_4_GOES_HERE"
### 5c. Migrating from Mjolnir (Only required if migrating.) ### 5c. Migrating from Mjolnir (Only required if migrating.)
Replace your `matrix_bot_mjolnir` config with `matrix_bot_draupnir` config. Also disable mjolnir if you're doing migration. Replace your `matrix_bot_mjolnir` config with `matrix_bot_draupnir` config. Also disable Mjolnir if you're doing migration.
That is all you need to do due to that Draupnir can complete migration on its own. That is all you need to do due to that Draupnir can complete migration on its own.
## 6. Installing ## 6. Installing
After configuring the playbook, run the [installation](installing.md) command: After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
``` <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the Pantalaimon's password (`matrix_bot_draupnir_pantalaimon_password` in your `vars.yml` file) subsequently, its credentials on the homeserver won't be updated automatically. If you'd like to change the password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_draupnir_pantalaimon_password` to let Pantalaimon know its new password.
## Usage ## Usage
You can refer to the upstream [documentation](https://github.com/the-draupnir-project/Draupnir) for additional ways to use and configure draupnir. Check out their [quickstart guide](https://github.com/the-draupnir-project/Draupnir/blob/main/docs/moderators.md#quick-usage) for some basic commands you can give to the bot. You can refer to the upstream [documentation](https://the-draupnir-project.github.io/draupnir-documentation/) for additional ways to use and configure Draupnir and for a more detailed usage guide.
You can configure additional options by adding the `matrix_bot_draupnir_configuration_extension_yaml` variable to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file. Below is a **non-exhaustive quick-start guide** for the impatient.
For example to change draupnir's `recordIgnoredInvites` option to `true` you would add the following to your `vars.yml` file. ### Making Draupnir join and protect a room
Draupnir can be told to self-join public rooms, but it's better to follow this flow which works well for all kinds of rooms:
1. Invite the bot to the room manually ([inviting Draupnir to rooms](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-protected-rooms#inviting-draupnir-to-rooms)). Before joining, the bot *may* ask for confirmation in the Management Room
2. [Give the bot permissions to do its job](#giving-draupnir-permissions-to-do-its-job)
3. Tell it to protect the room (using the [rooms command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-protected-rooms#using-the-draupnir-rooms-command)) by sending the following command to the Management Room: `!draupnir rooms add !qporfwt:example.com`
To have Draupnir provide useful room protection, you need do to a bit more work (at least the first time around). You may wish to [Subscribe to a public policy list](#subscribing-to-a-public-policy-list), [Create your own own policy and rules](#creating-your-own-policy-lists-and-rules) and [Enabling built-in protections](#enabling-built-in-protections).
### Giving Draupnir permissions to do its job
For Draupnir to do its job, you need to [give it permissions](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-protected-rooms#giving-draupnir-permissions) in rooms it's protecting. This involves **giving it an Administrator power level**.
**We recommend setting this power level as soon as the bot joins your room** (and before you create new rules), so that it can apply rules as soon as they are available. If the bot is under-privileged, it may fail to apply protections and may not retry for a while (or until your restart it).
### Subscribing to a public policy list
We recommend **subscribing to a public [policy list](https://the-draupnir-project.github.io/draupnir-documentation/concepts/policy-lists)** using the [watch command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-policy-lists#using-draupnirs-watch-command-to-subscribe-to-policy-rooms).
Polcy lists are maintained in Matrix rooms. A popular policy list is maintained in the public `#community-moderation-effort-bl:neko.dev` room.
You can tell Draupnir to subscribe to it by sending the following command to the Management Room: `!draupnir watch #community-moderation-effort-bl:neko.dev`
#### Creating your own policy lists and rules
We also recommend **creating your own policy lists** with the [list create](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-policy-lists#using-draupnirs-list-create-command-to-create-a-policy-room) command.
You can do so by sending the following command to the Management Room: `!draupnir list create my-bans my-bans-bl`. This will create a policy list having a name (shortcode) of `my-bans` and stored in a public `#my-bans-bl:example.com` room on your server. As soon as you run this command, the bot will invite you to the policy list room.
A policy list does nothing by itself, so the next step is **adding some rules to your policy list**. Policies target a so-called `entity` (one of: `user`, `room` or `server`). These entities are mentioned on the [policy lists](https://the-draupnir-project.github.io/draupnir-documentation/concepts/policy-lists) documentation page and in the Matrix Spec [here](https://spec.matrix.org/v1.11/client-server-api/#mban-recommendation).
The simplest and most useful entity to target is `user`. Below are a few examples using the [ban command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#the-ban-command) and targeting users.
To create rules, you run commands in the Management Room (**not** in the policy list room).
- (ban a single user on a given homeserver): `!draupnir ban @someone:example.com my-bans Rude to others`
- (ban all users on a given homeserver by using a [wildcard](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#wildcards)): `!draupnir ban @*:example.org my-bans Spam server - all users are fake`
As a result of running these commands, you may observe:
- Draupnir creating `m.policy.rule.user` state events in the `#my-bans-bl:example.com` room on your server
- applying these rules against all rooms that Draupnir is an Administrator in
You can undo bans with the [unban command](https://the-draupnir-project.github.io/draupnir-documentation/moderator/managing-users#the-unban-command).
### Enabling built-in protections
You can also **turn on various built-in [protections](https://the-draupnir-project.github.io/draupnir-documentation/protections)** like `JoinWaveShortCircuit` ("If X amount of users join in Y time, set the room to invite-only").
To **see which protections are available and which are enabled**, send a `!draupnir protections` command to the Management Room.
To **see the configuration options for a given protection**, send a `!draupnir config get PROTECTION_NAME` (e.g. `!draupnir config get JoinWaveShortCircuit`).
To **set a specific option for a given protection**, send a command like this: `!draupnir config set PROTECTION_NAME.OPTION VALUE` (e.g. `!draupnir config set JoinWaveShortCircuit.timescaleMinutes 30`).
To **enable a given protection**, send a command like this: `!draupnir enable PROTECTION_NAME` (e.g. `!draupnir enable JoinWaveShortCircuit`).
To **disable a given protection**, send a command like this: `!draupnir disable PROTECTION_NAME` (e.g. `!draupnir disable JoinWaveShortCircuit`).
## Extending the configuration
You can configure additional options by adding the `matrix_bot_draupnir_configuration_extension_yaml` variable to your `inventory/host_vars/matrix.example.com/vars.yml` file.
For example to change Draupnir's `recordIgnoredInvites` option to `true` you would add the following to your `vars.yml` file.
```yaml ```yaml
matrix_bot_draupnir_configuration_extension_yaml: | matrix_bot_draupnir_configuration_extension_yaml: |
@ -145,14 +216,14 @@ matrix_bot_draupnir_configuration_extension_yaml: |
Draupnir supports two methods to receive reports in the management room. Draupnir supports two methods to receive reports in the management room.
The first method intercepts the report API endpoint of the client-server API, which requires integration with the reverse proxy in front of the homeserver. The first method intercepts the report API endpoint of the client-server API, which requires integration with the reverse proxy in front of the homeserver. If you are using traefik, this playbook can set this up for you:
If you are using traefik, this playbook can set this up for you:
```yaml ```yaml
matrix_bot_draupnir_abuse_reporting_enabled: true matrix_bot_draupnir_abuse_reporting_enabled: true
``` ```
The other method polls an synapse admin API endpoint and is hence only available when using synapse and when the Draupnir user is an admin user (see step 1). The other method polls an synapse admin API endpoint and is hence only available when using synapse and when the Draupnir user is an admin user (see step 1). To enable it, set `pollReports: true` in Draupnir's config:
To enable it, set `pollReports: true` in Draupnir's config:
```yaml ```yaml
matrix_bot_draupnir_configuration_extension_yaml: | matrix_bot_draupnir_configuration_extension_yaml: |
pollReports: true pollReports: true

View File

@ -1,4 +1,6 @@
# Setting up Go-NEB (optional) # Setting up Go-NEB (optional, unmaintained)
**Note**: [Go-NEB](https://github.com/matrix-org/go-neb) is now an archived (**unmaintained**) project. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be installed using [this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bot instead of this one.
The playbook can install and configure [Go-NEB](https://github.com/matrix-org/go-neb) for you. The playbook can install and configure [Go-NEB](https://github.com/matrix-org/go-neb) for you.
@ -6,7 +8,6 @@ Go-NEB is a Matrix bot written in Go. It is the successor to Matrix-NEB, the ori
See the project's [documentation](https://github.com/matrix-org/go-neb) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/matrix-org/go-neb) to learn what it does and why it might be useful to you.
## Registering the bot user ## Registering the bot user
The playbook does not automatically create users for you. The bot requires at least 1 access token to be able to connect to your homeserver. The playbook does not automatically create users for you. The bot requires at least 1 access token to be able to connect to your homeserver.
@ -17,39 +18,15 @@ Choose a strong password for the bot. You can generate a good password with a co
You can use the playbook to [register a new user](registering-users.md): You can use the playbook to [register a new user](registering-users.md):
``` ```sh
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.go-neb password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.go-neb password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user
``` ```
Once the user is created you can [obtain an access token](obtaining-access-tokens.md). Once the user is created you can [obtain an access token](obtaining-access-tokens.md).
## Decide on a domain and path
By default, Go-NEB is configured to use its own dedicated domain (`goneb.DOMAIN`) and requires you to [adjust your DNS records](#adjusting-dns-records).
You can override the domain and path like this:
```yaml
# Switch to the domain used for Matrix services (`matrix.DOMAIN`),
# so we won't need to add additional DNS records for Go-NEB.
matrix_bot_go_neb_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /go-neb subpath
matrix_bot_go_neb_path_prefix: /go-neb
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Go-NEB domain to the Matrix server.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Adjusting the playbook configuration ## Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): To enable Go-NEB, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_bot_go_neb_enabled: true matrix_bot_go_neb_enabled: true
@ -148,7 +125,7 @@ matrix_bot_go_neb_services:
Config: Config:
feeds: feeds:
"http://lorem-rss.herokuapp.com/feed?unit=second&interval=60": "http://lorem-rss.herokuapp.com/feed?unit=second&interval=60":
rooms: ["!qmElAGdFYCHoCJuaNt:{{ matrix_domain }}"] rooms: ["!qporfwt:{{ matrix_domain }}"]
must_include: must_include:
author: author:
- author1 - author1
@ -174,13 +151,13 @@ matrix_bot_go_neb_services:
RealmID: "github_realm" RealmID: "github_realm"
ClientUserID: "@YOUR_USER_ID:{{ matrix_domain }}" # needs to be an authenticated user so Go-NEB can create webhooks. Check the UserID field in the github_realm in matrix_bot_go_neb_sessions. ClientUserID: "@YOUR_USER_ID:{{ matrix_domain }}" # needs to be an authenticated user so Go-NEB can create webhooks. Check the UserID field in the github_realm in matrix_bot_go_neb_sessions.
Rooms: Rooms:
"!someroom:id": "!qporfwt:example.com":
Repos: Repos:
"element-hq/synapse": "element-hq/synapse":
Events: ["push", "issues"] Events: ["push", "issues"]
"matrix-org/dendron": "matrix-org/dendron":
Events: ["pull_request"] Events: ["pull_request"]
"!anotherroom:id": "!aaabaa:example.com":
Repos: Repos:
"element-hq/synapse": "element-hq/synapse":
Events: ["push", "issues"] Events: ["push", "issues"]
@ -193,7 +170,7 @@ matrix_bot_go_neb_services:
Config: Config:
Hooks: Hooks:
"hook1": "hook1":
RoomID: "!someroom:id" RoomID: "!qporfwt:example.com"
MessageType: "m.text" # default is m.text MessageType: "m.text" # default is m.text
- ID: "alertmanager_service" - ID: "alertmanager_service"
@ -207,25 +184,57 @@ matrix_bot_go_neb_services:
webhook_url: "http://localhost/services/hooks/YWxlcnRtYW5hZ2VyX3NlcnZpY2U" webhook_url: "http://localhost/services/hooks/YWxlcnRtYW5hZ2VyX3NlcnZpY2U"
# Each room will get the notification with the alert rendered with the given template # Each room will get the notification with the alert rendered with the given template
rooms: rooms:
"!someroomid:domain.tld": "!qporfwt:example.com":
text_template: "{% raw %}{{range .Alerts -}} [{{ .Status }}] {{index .Labels \"alertname\" }}: {{index .Annotations \"description\"}} {{ end -}}{% endraw %}" text_template: "{% raw %}{{range .Alerts -}} [{{ .Status }}] {{index .Labels \"alertname\" }}: {{index .Annotations \"description\"}} {{ end -}}{% endraw %}"
html_template: "{% raw %}{{range .Alerts -}} {{ $severity := index .Labels \"severity\" }} {{ if eq .Status \"firing\" }} {{ if eq $severity \"critical\"}} <font color='red'><b>[FIRING - CRITICAL]</b></font> {{ else if eq $severity \"warning\"}} <font color='orange'><b>[FIRING - WARNING]</b></font> {{ else }} <b>[FIRING - {{ $severity }}]</b> {{ end }} {{ else }} <font color='green'><b>[RESOLVED]</b></font> {{ end }} {{ index .Labels \"alertname\"}} : {{ index .Annotations \"description\"}} <a href=\"{{ .GeneratorURL }}\">source</a><br/>{{end -}}{% endraw %}" html_template: "{% raw %}{{range .Alerts -}} {{ $severity := index .Labels \"severity\" }} {{ if eq .Status \"firing\" }} {{ if eq $severity \"critical\"}} <font color='red'><b>[FIRING - CRITICAL]</b></font> {{ else if eq $severity \"warning\"}} <font color='orange'><b>[FIRING - WARNING]</b></font> {{ else }} <b>[FIRING - {{ $severity }}]</b> {{ end }} {{ else }} <font color='green'><b>[RESOLVED]</b></font> {{ end }} {{ index .Labels \"alertname\"}} : {{ index .Annotations \"description\"}} <a href=\"{{ .GeneratorURL }}\">source</a><br/>{{end -}}{% endraw %}"
msg_type: "m.text" # Must be either `m.text` or `m.notice` msg_type: "m.text" # Must be either `m.text` or `m.notice`
``` ```
### Adjusting the Go-NEB URL
By default, this playbook installs Go-NEB on the `goneb.` subdomain (`goneb.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `matrix_bot_go_neb_hostname` and `matrix_bot_go_neb_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for Go-NEB.
matrix_bot_go_neb_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /buscarron subpath
matrix_bot_go_neb_path_prefix: /go-neb
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Go-NEB domain to the Matrix server.
By default, you will need to create a CNAME record for `goneb`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Installing ## Installing
After potentially [adjusting DNS records](#adjusting-dns-records) and configuring the playbook, run the [installation](installing.md) command again: 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. -->
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
To use the bot, invite it to any existing Matrix room (`/invite @whatever_you_chose:DOMAIN` where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain, make sure you have permission from the room owner if that's not you). To use the bot, invite it to any existing Matrix room (`/invite @whatever_you_chose:example.com` where `example.com` is your base domain, not the `matrix.` domain, make sure you have permission from the room owner if that's not you).
Basic usage is like this: `!echo hi` or `!imgur puppies` or `!giphy matrix` Basic usage is like this: `!echo hi` or `!imgur puppies` or `!giphy matrix`

View File

@ -1,23 +1,18 @@
# Setting up Honoroit (optional) # Setting up Honoroit (optional)
The playbook can install and configure [Honoroit](https://gitlab.com/etke.cc/honoroit) for you. The playbook can install and configure [Honoroit](https://github.com/etkecc/honoroit) for you.
It's a bot you can use to setup **your own helpdesk on matrix** It's a bot you can use to setup **your own helpdesk on matrix**
See the project's [documentation](https://gitlab.com/etke.cc/honoroit#how-it-looks-like) to learn what it does with screenshots and why it might be useful to you. See the project's [documentation](https://github.com/etkecc/honoroit#how-it-looks-like) to learn what it does with screenshots and why it might be useful to you.
## Adjusting the playbook configuration ## Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file: To enable Honoroit, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_bot_honoroit_enabled: true matrix_bot_honoroit_enabled: true
# Uncomment and adjust if you'd like to change the hostname or path
# matrix_bot_honoroit_hostname: "{{ matrix_server_fqn_matrix }}"
# matrix_bot_honoroit_path_prefix: /honoroit
# Uncomment and adjust this part if you'd like to use a username different than the default # Uncomment and adjust this part if you'd like to use a username different than the default
# matrix_bot_honoroit_login: honoroit # matrix_bot_honoroit_login: honoroit
@ -25,29 +20,54 @@ matrix_bot_honoroit_enabled: true
matrix_bot_honoroit_password: PASSWORD_FOR_THE_BOT matrix_bot_honoroit_password: PASSWORD_FOR_THE_BOT
# Adjust this to your room ID # Adjust this to your room ID
matrix_bot_honoroit_roomid: "!yourRoomID:DOMAIN" matrix_bot_honoroit_roomid: "!qporfwt:{{ matrix_domain }}"
``` ```
### Adjusting the Honoroit URL
By default, this playbook installs Honoroit on the `matrix.` subdomain, at the `/honoroit` path (https://matrix.example.com/honoroit). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
By tweaking the `matrix_bot_honoroit_hostname` and `matrix_bot_honoroit_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname and path prefix
matrix_bot_honoroit_hostname: honoroit.example.com
matrix_bot_honoroit_path_prefix: /
```
## Adjusting DNS records
If you've changed the default hostname, **you may need to adjust your DNS** records to point the Honoroit domain to the Matrix server.
See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to use the default hostname, you won't need to do any extra DNS configuration.
## Installing ## Installing
After configuring the playbook, run the [installation](installing.md) command again: 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 ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
**Notes**: **Notes**:
- the `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- if you change the bot password (`matrix_bot_honoroit_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_honoroit_password` to let the bot know its new password - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bot password (`matrix_bot_honoroit_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_honoroit_password` to let the bot know its new password.
## Usage ## Usage
To use the bot, invite the `@honoroit:DOMAIN` to the room you specified in config, after that any matrix user can send a message to the `@honoroit:DOMAIN` to start a new thread in that room. To use the bot, invite the `@honoroit:example.com` to the room you specified in config, after that any Matrix user can send a message to the `@honoroit:example.com` to start a new thread in that room.
Send `!ho help` to the room to see the bot's help menu for additional commands. Send `!ho help` to the room to see the bot's help menu for additional commands.
You can also refer to the upstream [documentation](https://gitlab.com/etke.cc/honoroit#features). You can also refer to the upstream [documentation](https://github.com/etkecc/honoroit#features).

View File

@ -2,22 +2,19 @@
The playbook can install and configure [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) for you. The playbook can install and configure [matrix-registration-bot](https://github.com/moan0s/matrix-registration-bot) for you.
The bot allows you to easily **create and manage registration tokens** aka. invitation codes. The bot allows you to easily **create and manage registration tokens** aka. invitation codes. It can be used for an invitation-based server, where you invite someone by sending them a registration token (tokens look like this: `rbalQ0zkaDSRQCOp`). They can register as per normal but have to provide a valid registration token in the final step of the registration process.
It can be used for an invitation-based server, where you invite someone by sending them a registration token (tokens look like this: `rbalQ0zkaDSRQCOp`). They can register as per normal but have to provide a valid registration token in the final step of the registration process.
See the project's [documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands) to learn what it
does and why it might be useful to you.
See the project's [documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands) to learn what it does and why it might be useful to you.
## Configuration ## Configuration
To enable the bot, add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file: To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_bot_matrix_registration_bot_enabled: true matrix_bot_matrix_registration_bot_enabled: true
# By default, the playbook will set use the bot with a username like this: `@bot.matrix-registration-bot:DOMAIN`. # By default, the playbook will set use the bot with a username like this: `@bot.matrix-registration-bot:example.com`.
# To use a different username, uncomment & adjust the variable below: # Uncomment and adjust this part if you'd like to use a username different than the default
# matrix_bot_matrix_registration_bot_matrix_user_id_localpart: bot.matrix-registration-bot # matrix_bot_matrix_registration_bot_matrix_user_id_localpart: bot.matrix-registration-bot
# Generate a strong password here. Consider generating it with `pwgen -s 64 1` # Generate a strong password here. Consider generating it with `pwgen -s 64 1`
@ -34,20 +31,35 @@ The bot account will be created automatically.
## Installing ## Installing
After configuring the playbook, re-run the [installation](installing.md) command again: `just install-all` or `just setup-all` After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bot password (`matrix_bot_matrix_registration_bot_bot_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_matrix_registration_bot_bot_password` to let the bot know its new password.
## Usage ## Usage
To use the bot, message `@bot.matrix-registration-bot:DOMAIN` (where `DOMAIN` is your base domain, not the `matrix.` domain). To use the bot, start a chat with `@bot.matrix-registration-bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
In this room send `help` and the bot will reply with all options. In this room send `help` and the bot will reply with all options.
You can also refer to the upstream [Usage documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands). You can also refer to the upstream [Usage documentation](https://github.com/moan0s/matrix-registration-bot#supported-commands).
If you have any questions, or if you need help setting it up, read the [troublshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md)
or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de).
To clean the cache (session&encryption data) after you changed the bot's username, changed the login methon form access_token to password etc.. you can use If you have any questions, or if you need help setting it up, read the [troublshooting guide](https://github.com/moan0s/matrix-registration-bot/blob/main/docs/troubleshooting.md) or join [#matrix-registration-bot:hyteck.de](https://matrix.to/#/#matrix-registration-bot:hyteck.de).
```bash To clean the cache (session & encryption data) after you changed the bot's username, changed the login method from access_token to password etc... you can use:
```sh
just run-tags bot-matrix-registration-bot-clean-cache just run-tags bot-matrix-registration-bot-clean-cache
``` ```

View File

@ -6,10 +6,9 @@ It's a bot you can use to **schedule one-off & recurring reminders and alarms**.
See the project's [documentation](https://github.com/anoadragon453/matrix-reminder-bot#usage) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/anoadragon453/matrix-reminder-bot#usage) to learn what it does and why it might be useful to you.
## Adjusting the playbook configuration ## Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file: Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_bot_matrix_reminder_bot_enabled: true matrix_bot_matrix_reminder_bot_enabled: true
@ -24,27 +23,30 @@ matrix_bot_matrix_reminder_bot_matrix_user_password: PASSWORD_FOR_THE_BOT
matrix_bot_matrix_reminder_bot_reminders_timezone: Europe/London matrix_bot_matrix_reminder_bot_reminders_timezone: Europe/London
``` ```
## Installing ## Installing
After configuring the playbook, run the [installation](installing.md) command again: After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
**Notes**: **Notes**:
- the `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- if you change the bot password (`matrix_bot_matrix_reminder_bot_matrix_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_matrix_reminder_bot_matrix_user_password` to let the bot know its new password - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bot password (`matrix_bot_matrix_reminder_bot_matrix_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_matrix_reminder_bot_matrix_user_password` to let the bot know its new password.
## Usage ## Usage
To use the bot, start a chat with `@bot.matrix-reminder-bot:DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). To use the bot, start a chat with `@bot.matrix-reminder-bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
You can also add the bot to any existing Matrix room (`/invite @bot.matrix-reminder-bot:DOMAIN`). You can also add the bot to any existing Matrix room (`/invite @bot.matrix-reminder-bot:example.com`).
Basic usage is like this: `!remindme in 2 minutes; This is a test` Basic usage is like this: `!remindme in 2 minutes; This is a test`

View File

@ -2,15 +2,13 @@
The playbook can install and configure [maubot](https://github.com/maubot/maubot) for you. The playbook can install and configure [maubot](https://github.com/maubot/maubot) for you.
After setting up maubot, you can use the web management interface to make it do things. After setting up maubot, you can use the web management interface to make it do things. The default location of the management interface is `matrix.example.com/_matrix/maubot/`
The default location of the management interface is `matrix.<your-domain>/_matrix/maubot/`
See the project's [documentation](https://docs.mau.fi/maubot/usage/basic.html) to learn what it See the project's [documentation](https://docs.mau.fi/maubot/usage/basic.html) to learn what it does and why it might be useful to you.
does and why it might be useful to you.
## Adjusting the playbook configuration ## Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file: To enable maubot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_bot_maubot_enabled: true matrix_bot_maubot_enabled: true
@ -27,29 +25,58 @@ matrix_bot_maubot_admins:
You can add multiple admins. The admin accounts are only used to access the maubot administration interface. You can add multiple admins. The admin accounts are only used to access the maubot administration interface.
### Adjusting the maubot URL
By default, this playbook installs maubot on the `matrix.` subdomain, at the `/_matrix/maubot/` path (https://matrix.example.com/_matrix/maubot/). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
By tweaking the `matrix_bot_maubot_hostname` and `matrix_bot_maubot_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname and path prefix
matrix_bot_maubot_hostname: maubot.example.com
matrix_bot_maubot_path_prefix: /
```
## Adjusting DNS records
If you've changed the default hostname, **you may need to adjust your DNS** records to point the maubot domain to the Matrix server.
See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to use the default hostname, you won't need to do any extra DNS configuration.
## Installing ## Installing
After configuring the playbook, run the [installation](installing.md) command again (`just install-all`): 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,ensure-matrix-users-created,start
```
**Notes**: **Notes**:
- if you change the bot password (`matrix_bot_maubot_initial_password` in your `vars.yml` file) subsequently, - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
the bot user's credentials on the homeserver won't be updated automatically.
If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bot password (`matrix_bot_maubot_initial_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_maubot_initial_password` to let the bot know its new password.
## Usage ## Usage
You can visit `matrix.<your-domain>/_matrix/maubot/` to manage your available plugins, clients and instances. By default, you can visit `matrix.example.com/_matrix/maubot/` to manage your available plugins, clients and instances.
You should start in the following order You should start in the following order
1. **Create one or more clients:** A client is a matrix account which the bot will use to message. By default, the playbook creates a `bot.maubot` account (as per the configuration above). You only need to [obtain an access token](#obtaining-an-access-token) for it 1. **Create one or more clients**: A client is a Matrix account which the bot will use to message. By default, the playbook creates a `bot.maubot` account (as per the configuration above). You only need to [obtain an access token](#obtaining-an-access-token) for it
2. **Upload some Plugins:** Plugins can be obtained from [here](https://github.com/maubot/maubot#plugins) or any other source. 2. **Upload some Plugins**: Plugins can be obtained from [here](https://github.com/maubot/maubot#plugins) or any other source.
3. **Create an instance:** An instance is the actual bot. You have to specify a client which the bot instance will use 3. **Create an instance**: An instance is the actual bot. You have to specify a client which the bot instance will use and the plugin (how the bot will behave)
and the plugin (how the bot will behave)
## Obtaining an access token ## Obtaining an access token
This can be done via `mbc login` then `mbc auth` (see the [maubot documentation](https://docs.mau.fi/maubot/usage/cli/auth.html)). To run these commands, you'll first need to `exec` into the maubot container with `docker exec -it matrix-bot-maubot sh`. This can be done via `mbc login` then `mbc auth` (see the [maubot documentation](https://docs.mau.fi/maubot/usage/cli/auth.html)). To run these commands, you'll first need to `exec` into the maubot container with `docker exec -it matrix-bot-maubot sh`.
Alternatively, you can follow our generic [obtain an access token](obtaining-access-tokens.md) documentation. Alternatively, you can follow our generic [obtain an access token](obtaining-access-tokens.md) documentation. Be aware that you'd better use the **Obtain an access token via curl** method (not **Obtain an access token via Element Web**) as the latter will give your bot issues in encrypted rooms. Read [more](https://docs.mau.fi/maubot/usage/basic.html#creating-clients).

View File

@ -4,7 +4,6 @@ The playbook can install and configure the [Mjolnir](https://github.com/matrix-o
See the project's [documentation](https://github.com/matrix-org/mjolnir) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/matrix-org/mjolnir) to learn what it does and why it might be useful to you.
## 1. Register the bot account ## 1. Register the bot account
The playbook does not automatically create users for you. The bot requires an access token to be able to connect to your homeserver. The playbook does not automatically create users for you. The bot requires an access token to be able to connect to your homeserver.
@ -15,25 +14,23 @@ Choose a strong password for the bot. You can generate a good password with a co
You can use the playbook to [register a new user](registering-users.md): You can use the playbook to [register a new user](registering-users.md):
``` ```sh
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.mjolnir password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=bot.mjolnir password=PASSWORD_FOR_THE_BOT admin=no' --tags=register-user
``` ```
If you would like Mjolnir to be able to deactivate users, move aliases, shutdown rooms, etc then it must be a server admin so you need to change `admin=no` to `admin=yes` in the command above. If you would like Mjolnir to be able to deactivate users, move aliases, shutdown rooms, etc then it must be a server admin so you need to change `admin=no` to `admin=yes` in the command above.
## 2. Get an access token ## 2. Get an access token
Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md).
## 3. Make sure the account is free from rate limiting ## 3. Make sure the account is free from rate limiting
You will need to prevent Synapse from rate limiting the bot's account. This is not an optional step. If you do not do this step Mjolnir will crash. This can be done using Synapse's [admin API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#override-ratelimiting-for-users). Please ask for help if you are uncomfortable with these steps or run into issues. You will need to prevent Synapse from rate limiting the bot's account. This is not an optional step. If you do not do this step Mjolnir will crash. This can be done using Synapse's [admin API](https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#override-ratelimiting-for-users). Please ask for help if you are uncomfortable with these steps or run into issues.
If your Synapse Admin API is exposed to the internet for some reason like running the Synapse Admin Role [Link](/docs/configuring-playbook-synapse-admin.md) or running `matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true` in your playbook config. If your API is not externally exposed you should still be able to on the local host for your synapse run these commands. If your Synapse Admin API is exposed to the internet for some reason like running the Synapse Admin Role [Link](configuring-playbook-synapse-admin.md) or running `matrix_synapse_container_labels_public_client_synapse_admin_api_enabled: true` in your playbook config. If your API is not externally exposed you should still be able to on the local host for your synapse run these commands.
The following command works on semi up to date Windows 10 installs and All Windows 11 installations and other systems that ship curl. `curl --header "Authorization: Bearer <access_token>" -X POST https://matrix.example.com/_synapse/admin/v1/users/@example:example.com/override_ratelimit` Replace `@example:example.com` with the MXID of your Mjolnir and example.com with your homeserver domain. You can easily obtain an access token for a homeserver admin account the same way you can obtain an access token for Mjolnir it self. If you made Mjolnir Admin you can just use the Mjolnir token. The following command works on semi up to date Windows 10 installs and All Windows 11 installations and other systems that ship curl. `curl --header "Authorization: Bearer <access_token>" -X POST https://matrix.example.com/_synapse/admin/v1/users/@example:example.com/override_ratelimit` Replace `@example:example.com` with the MXID of your Mjolnir and example.com with your homeserver domain. You can easily obtain an access token for a homeserver admin account the same way you can obtain an access token for Mjolnir itself. If you made Mjolnir Admin you can just use the Mjolnir token.
## 4. Create a management room ## 4. Create a management room
@ -41,10 +38,9 @@ Using your own account, create a new invite only room that you will use to manag
If you make the management room encrypted (E2EE), then you MUST enable and use Pantalaimon (see below). If you make the management room encrypted (E2EE), then you MUST enable and use Pantalaimon (see below).
Once you have created the room you need to copy the room ID so you can tell the bot to use that room. In Element you can do this by going to the room's settings, clicking Advanced, and then coping the internal room ID. The room ID will look something like `!QvgVuKq0ha8glOLGMG:DOMAIN`. Once you have created the room you need to copy the room ID so you can tell the bot to use that room. In Element Web you can do this by going to the room's settings, clicking Advanced, and then copying the internal room ID. The room ID will look something like `!qporfwt:example.com`.
Finally invite the `@bot.mjolnir:DOMAIN` account you created earlier into the room.
Finally invite the `@bot.mjolnir:example.com` account you created earlier into the room.
## 5. Adjusting the playbook configuration ## 5. Adjusting the playbook configuration
@ -54,7 +50,7 @@ Decide whether you want Mjolnir to be capable of operating in end-to-end encrypt
When using Pantalaimon, Mjolnir will log in to its bot account itself through Pantalaimon, so configure its username and password. When using Pantalaimon, Mjolnir will log in to its bot account itself through Pantalaimon, so configure its username and password.
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
# Enable Pantalaimon. See docs/configuring-playbook-pantalaimon.md # Enable Pantalaimon. See docs/configuring-playbook-pantalaimon.md
@ -76,7 +72,7 @@ matrix_bot_mjolnir_management_room: "ROOM_ID_FROM_STEP_4_GOES_HERE"
The playbook's `group_vars` will configure other required settings. If using this role separately without the playbook, you also need to configure the two URLs that Mjolnir uses to reach the homeserver, one through Pantalaimon and one "raw". This example is taken from the playbook's `group_vars`: The playbook's `group_vars` will configure other required settings. If using this role separately without the playbook, you also need to configure the two URLs that Mjolnir uses to reach the homeserver, one through Pantalaimon and one "raw". This example is taken from the playbook's `group_vars`:
```yaml ```yaml
# Endpoint URL that Mjolnir uses to interact with the matrix homeserver (client-server API). # Endpoint URL that Mjolnir uses to interact with the Matrix homeserver (client-server API).
# Set this to the pantalaimon URL if you're using that. # Set this to the pantalaimon URL if you're using that.
matrix_bot_mjolnir_homeserver_url: "{{ 'http://matrix-pantalaimon:8009' if matrix_bot_mjolnir_pantalaimon_use else matrix_addons_homeserver_client_api_url }}" matrix_bot_mjolnir_homeserver_url: "{{ 'http://matrix-pantalaimon:8009' if matrix_bot_mjolnir_pantalaimon_use else matrix_addons_homeserver_client_api_url }}"
@ -89,7 +85,7 @@ matrix_bot_mjolnir_raw_homeserver_url: "{{ matrix_addons_homeserver_client_api_u
When NOT using Pantalaimon, Mjolnir does not log in by itself and you must give it an access token for its bot account. When NOT using Pantalaimon, Mjolnir does not log in by itself and you must give it an access token for its bot account.
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
You must replace `ACCESS_TOKEN_FROM_STEP_2_GOES_HERE` and `ROOM_ID_FROM_STEP_4_GOES_HERE` with the your own values. You must replace `ACCESS_TOKEN_FROM_STEP_2_GOES_HERE` and `ROOM_ID_FROM_STEP_4_GOES_HERE` with the your own values.
@ -101,10 +97,9 @@ matrix_bot_mjolnir_access_token: "ACCESS_TOKEN_FROM_STEP_2_GOES_HERE"
matrix_bot_mjolnir_management_room: "ROOM_ID_FROM_STEP_4_GOES_HERE" matrix_bot_mjolnir_management_room: "ROOM_ID_FROM_STEP_4_GOES_HERE"
``` ```
## 6. Adding mjolnir synapse antispam module (optional) ## 6. Adding Mjolnir synapse antispam module (optional)
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs):
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
matrix_synapse_ext_spam_checker_mjolnir_antispam_enabled: true matrix_synapse_ext_spam_checker_mjolnir_antispam_enabled: true
@ -114,23 +109,32 @@ matrix_synapse_ext_spam_checker_mjolnir_antispam_config_block_usernames: false
matrix_synapse_ext_spam_checker_mjolnir_antispam_config_ban_lists: [] matrix_synapse_ext_spam_checker_mjolnir_antispam_config_ban_lists: []
``` ```
## 7. Installing ## 7. Installing
After configuring the playbook, run the [installation](installing.md) command: After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
``` <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the Pantalaimon's password (`matrix_bot_mjolnir_pantalaimon_password` in your `vars.yml` file) subsequently, its credentials on the homeserver won't be updated automatically. If you'd like to change the password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_mjolnir_pantalaimon_password` to let Pantalaimon know its new password.
## Usage ## Usage
You can refer to the upstream [documentation](https://github.com/matrix-org/mjolnir) for additional ways to use and configure mjolnir. Check out their [quickstart guide](https://github.com/matrix-org/mjolnir#quickstart-guide) for some basic commands you can give to the bot. You can refer to the upstream [documentation](https://github.com/matrix-org/mjolnir) for additional ways to use and configure Mjolnir. Check out their [quickstart guide](https://github.com/matrix-org/mjolnir#quickstart-guide) for some basic commands you can give to the bot.
You can configure additional options by adding the `matrix_bot_mjolnir_configuration_extension_yaml` variable to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file. You can configure additional options by adding the `matrix_bot_mjolnir_configuration_extension_yaml` variable to your `inventory/host_vars/matrix.example.com/vars.yml` file.
For example to change mjolnir's `recordIgnoredInvites` option to `true` you would add the following to your `vars.yml` file. For example to change Mjolnir's `recordIgnoredInvites` option to `true` you would add the following to your `vars.yml` file.
```yaml ```yaml
matrix_bot_mjolnir_configuration_extension_yaml: | matrix_bot_mjolnir_configuration_extension_yaml: |

View File

@ -1,88 +0,0 @@
# Setting up Postmoogle (optional)
**Note**: email bridging can also happen via the [email2matrix](configuring-playbook-email2matrix.md) bridge supported by the playbook.
The playbook can install and configure [Postmoogle](https://gitlab.com/etke.cc/postmoogle) for you.
It's a bot/bridge you can use to forward emails to Matrix rooms.
Postmoogle runs an SMTP email server and allows you to assign mailbox addresses to Matrix rooms.
See the project's [documentation](https://gitlab.com/etke.cc/postmoogle) to learn what it does and why it might be useful to you.
## Prerequisites
### Networking
Open the following ports on your server to be able to receive incoming emails:
- `25/tcp`: SMTP
- `587/tcp`: Submission (TLS-encrypted SMTP)
If you don't open these ports, you will still be able to send emails, but not receive any.
These port numbers are configurable via the `matrix_bot_postmoogle_smtp_host_bind_port` and `matrix_bot_postmoogle_submission_host_bind_port` variables, but other email servers will try to deliver on these default (standard) ports, so changing them is of little use.
### Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file:
```yaml
matrix_bot_postmoogle_enabled: true
# Uncomment and adjust this part if you'd like to use a username different than the default
# matrix_bot_postmoogle_login: postmoogle
# Generate a strong password here. Consider generating it with `pwgen -s 64 1`
matrix_bot_postmoogle_password: PASSWORD_FOR_THE_BOT
# Uncomment to add one or more admins to this bridge:
#
# matrix_bot_postmoogle_admins:
# - '@yourAdminAccount:domain.com'
#
# .. unless you've made yourself an admin of all bridges like this:
#
# matrix_admin: '@yourAdminAccount:domain.com'
```
### DNS
You will also need to add several DNS records so that Postmoogle can send emails.
See [Configuring DNS](configuring-dns.md).
## Installing
After configuring the playbook, run the [installation](installing.md) command again:
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- the `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account
- if you change the bot password (`matrix_bot_postmoogle_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_postmoogle_password` to let the bot know its new password
## Usage
To use the bot, invite the `@postmoogle:DOMAIN` into a room you want to use as a mailbox.
Then send `!pm mailbox NAME` to expose this Matrix room as an inbox with the email address `NAME@matrix.domain`. Emails sent to that email address will be forwarded to the room.
Send `!pm help` to the room to see the bot's help menu for additional commands.
You can also refer to the upstream [documentation](https://gitlab.com/etke.cc/postmoogle).
### Debug/Logs
As with all other services, you can find their logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by running something like `journalctl -fu matrix-bot-postmoogle`
The default logging level for this bridge is `INFO`, but you can increase it to `DEBUG` with the following additional configuration:
```yaml
matrix_bot_postmoogle_loglevel: 'DEBUG'
```

View File

@ -1,70 +1,86 @@
# Setting up Appservice Discord (optional) # Setting up Appservice Discord bridging (optional)
**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook. **Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook.
- For using as a Bot we are recommend the Appservice Discord bridge (the one being discussed here), because it supports plumbing. - For using as a Bot we are recommend the Appservice Discord bridge (the one being discussed here), because it supports plumbing.
- For personal use we recommend the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge, because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook. - For personal use we recommend the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge, because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook.
The playbook can install and configure [matrix-appservice-discord](https://github.com/Half-Shot/matrix-appservice-discord) for you. The playbook can install and configure [matrix-appservice-discord](https://github.com/matrix-org/matrix-appservice-discord) for you.
See the project's [documentation](https://github.com/Half-Shot/matrix-appservice-discord/blob/master/README.md) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/matrix-org/matrix-appservice-discord/blob/master/README.md) to learn what it does and why it might be useful to you.
## Prerequisites
## Setup Instructions Create a Discord Application [here](https://discordapp.com/developers/applications). Then retrieve Client ID, and create a bot from the Bot tab and retrieve the Bot token.
Instructions loosely based on [this](https://github.com/Half-Shot/matrix-appservice-discord#setting-up). ## Adjusting the playbook configuration
1. Create a Discord Application [here](https://discordapp.com/developers/applications). To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
2. Retrieve Client ID.
3. Create a bot from the Bot tab and retrieve the Bot token.
4. Enable the bridge with the following configuration in your `vars.yml` file:
```yaml ```yaml
matrix_appservice_discord_enabled: true matrix_appservice_discord_enabled: true
matrix_appservice_discord_client_id: "YOUR DISCORD APP CLIENT ID" matrix_appservice_discord_client_id: "YOUR DISCORD APP CLIENT ID"
matrix_appservice_discord_bot_token: "YOUR DISCORD APP BOT TOKEN" matrix_appservice_discord_bot_token: "YOUR DISCORD APP BOT TOKEN"
```
5. As of Synapse 1.90.0, you will need to add the following to `matrix_synapse_configuration_extension_yaml` to enable the [backwards compatibility](https://matrix-org.github.io/synapse/latest/upgrade#upgrading-to-v1900) that this bridge needs:
```yaml
matrix_synapse_configuration_extension_yaml: |
use_appservice_legacy_authorization: true
```
*Note*: This deprecated method is considered insecure.
6. If you've already installed Matrix services using the playbook before, you'll need to re-run it (`--tags=setup-all,start`). If not, proceed with [configuring other playbook services](configuring-playbook.md) and then with [Installing](installing.md). Get back to this guide once ready. # As of Synapse 1.90.0, uncomment to enable the backwards compatibility (https://matrix-org.github.io/synapse/latest/upgrade#upgrading-to-v1900) that this bridge needs.
# Note: This deprecated method is considered insecure.
#
# matrix_synapse_configuration_extension_yaml: |
# use_appservice_legacy_authorization: true
```
Other configuration options are available via the `matrix_appservice_discord_configuration_extension_yaml` variable. ## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Self-Service Bridging (Manual) ## Self-Service Bridging (Manual)
Self-service bridging allows you to bridge specific and existing Matrix rooms to specific Discord rooms. This is disabled by default, so it must be enabled by adding this to your `vars.yml`: Self-service bridging allows you to bridge specific and existing Matrix rooms to specific Discord rooms. To enable it, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_appservice_discord_bridge_enableSelfServiceBridging: true matrix_appservice_discord_bridge_enableSelfServiceBridging: true
``` ```
_Note: If self-service bridging is not enabled, `!discord help` commands will return no results._ **Note**: If self-service bridging is not enabled, `!discord help` commands will return no results.
Once self-service is enabled: ### Usage
1. Start a chat with `@_discord_bot:<YOUR_DOMAIN>` and say `!discord help bridge`. Once self-service is enabled, start a chat with `@_discord_bot:example.com` and say `!discord help bridge`.
2. Follow the instructions in the help output message. If the bot is not already in the Discord server, follow the provided invite link. This may require you to be a administrator of the Discord server.
_Note: Encrypted Matrix rooms are not supported as of writing._ Then, follow the instructions in the help output message.
If the bot is not already in the Discord server, follow the provided invite link. This may require you to be a administrator of the Discord server.
On the Discord side, you can say `!matrix help` to get a list of available commands to manage the bridge and Matrix users. On the Discord side, you can say `!matrix help` to get a list of available commands to manage the bridge and Matrix users.
**Note**: Encrypted Matrix rooms are not supported as of writing.
## Portal Bridging (Automatic) ## Portal Bridging (Automatic)
Through portal bridging, Matrix rooms will automatically be created by the bot and bridged to the relevant Discord room. This is done by simply joining a room with a specific name pattern (`#_discord_<guildID>_<channlID>`). Through portal bridging, Matrix rooms will automatically be created by the bot and bridged to the relevant Discord room. This is done by simply joining a room with a specific name pattern (`#_discord_<guildID>_<channelID>`).
All Matrix rooms created this way are **listed publicly** by default, and you will not have admin permissions to change this. To get more control, [make yourself a room Administrator](#getting-administrator-access-in-a-portal-bridged-room). You can then unlist the room from the directory and change the join rules. All Matrix rooms created this way are **listed publicly** by default, and you will not have admin permissions to change this. To get more control, [make yourself a room Administrator](#getting-administrator-access-in-a-portal-bridged-room). You can then unlist the room from the directory and change the join rules.
If you want to disable portal bridging, set the following in `vars.yml`: To disable portal bridging, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_appservice_discord_bridge_disablePortalBridging: true matrix_appservice_discord_bridge_disablePortalBridging: true
``` ```
### Usage
To get started with Portal Bridging: To get started with Portal Bridging:
1. To invite the bot to Discord, retrieve the invite link from the `{{ matrix_appservice_discord_config_path }}/invite_link` file on the server (this defaults to `/matrix/appservice-discord/config/invite_link`). You need to peek at the file on the server via SSH, etc., because it's not available via HTTP(S). 1. To invite the bot to Discord, retrieve the invite link from the `{{ matrix_appservice_discord_config_path }}/invite_link` file on the server (this defaults to `/matrix/appservice-discord/config/invite_link`). You need to peek at the file on the server via SSH, etc., because it's not available via HTTP(S).
@ -77,9 +93,9 @@ By default, you won't have Administrator access in rooms created by the bridge.
To adjust room access privileges or do various other things (change the room name subsequently, etc.), you'd wish to become an Administrator. To adjust room access privileges or do various other things (change the room name subsequently, etc.), you'd wish to become an Administrator.
There's the Discord bridge's guide for [setting privileges on bridge managed rooms](https://github.com/Half-Shot/matrix-appservice-discord/blob/master/docs/howto.md#set-privileges-on-bridge-managed-rooms). To do the same with our container setup, run the following command on the server: There's the Discord bridge's guide for [setting privileges on bridge managed rooms](https://github.com/matrix-org/matrix-appservice-discord/blob/master/docs/howto.md#set-privileges-on-bridge-managed-rooms). To do the same with our container setup, run the following command on the server:
```sh ```sh
docker exec -it matrix-appservice-discord \ docker exec -it matrix-appservice-discord \
/bin/sh -c 'cp /cfg/registration.yaml /tmp/discord-registration.yaml && cd /tmp && node /build/tools/adminme.js -c /cfg/config.yaml -m "!ROOM_ID:SERVER" -u "@USER:SERVER" -p 100' /bin/sh -c 'cp /cfg/registration.yaml /tmp/discord-registration.yaml && cd /tmp && node /build/tools/adminme.js -c /cfg/config.yaml -m "!qporfwt:example.com" -u "@USER:example.com" -p 100'
``` ```

View File

@ -1,4 +1,4 @@
# Setting up Appservice IRC (optional) # Setting up Appservice IRC bridging (optional)
**Note**: bridging to [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) can also happen via the [Heisenbridge](configuring-playbook-bridge-heisenbridge.md) bridge supported by the playbook. **Note**: bridging to [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) can also happen via the [Heisenbridge](configuring-playbook-bridge-heisenbridge.md) bridge supported by the playbook.
@ -6,7 +6,9 @@ The playbook can install and configure the [matrix-appservice-irc](https://githu
See the project's [documentation](https://github.com/matrix-org/matrix-appservice-irc/blob/master/HOWTO.md) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/matrix-org/matrix-appservice-irc/blob/master/HOWTO.md) to learn what it does and why it might be useful to you.
You'll need to use the following playbook configuration: ## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_appservice_irc_enabled: true matrix_appservice_irc_enabled: true
@ -58,4 +60,23 @@ matrix_appservice_irc_ircService_servers:
lineLimit: 3 lineLimit: 3
``` ```
You then need to start a chat with `@irc_bot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). ## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
You then need to start a chat with `@irc_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).

View File

@ -1,15 +1,20 @@
# Setting up Appservice Kakaotalk (optional) # Setting up Appservice Kakaotalk bridging (optional)
The playbook can install and configure [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) for you. `matrix-appservice-kakaotalk` is a bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) based on [node-kakao](https://github.com/storycraft/node-kakao) (now unmaintained) and some [mautrix-facebook](https://github.com/mautrix/facebook) code. The playbook can install and configure [matrix-appservice-kakaotalk](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) for you. `matrix-appservice-kakaotalk` is a bridge to [Kakaotalk](https://www.kakaocorp.com/page/service/service/KakaoTalk?lang=ENG) based on [node-kakao](https://github.com/storycraft/node-kakao) (now unmaintained) and some [mautrix-facebook](https://github.com/mautrix/facebook) code.
**NOTE**: there have been recent reports (~2022-09-16) that **using this bridge may get your account banned**. ⚠️ **Warning**: there have been recent reports (~2022-09-16) that **using this bridge may get your account banned**.
See the project's [documentation](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) to learn what it does and why it might be useful to you. See the project's [documentation](https://src.miscworks.net/fair/matrix-appservice-kakaotalk) to learn what it does and why it might be useful to you.
## Prerequisite (optional)
## Installing If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook.
To enable the bridge, add this to your `vars.yml` file: For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_appservice_kakaotalk_enabled: true matrix_appservice_kakaotalk_enabled: true
@ -17,11 +22,6 @@ matrix_appservice_kakaotalk_enabled: true
You may optionally wish to add some [Additional configuration](#additional-configuration), or to [prepare for double-puppeting](#set-up-double-puppeting) before the initial installation. You may optionally wish to add some [Additional configuration](#additional-configuration), or to [prepare for double-puppeting](#set-up-double-puppeting) before the initial installation.
After adjusting your `vars.yml` file, re-run the playbook and restart all services: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`
To make use of the Kakaotalk bridge, see [Usage](#usage) below.
### Additional configuration ### Additional configuration
There are some additional things you may wish to configure about the bridge. There are some additional things you may wish to configure about the bridge.
@ -31,21 +31,43 @@ Take a look at:
- `roles/custom/matrix-bridge-appservice-kakaotalk/defaults/main.yml` for some variables that you can customize via your `vars.yml` file - `roles/custom/matrix-bridge-appservice-kakaotalk/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_kakaotalk_configuration_extension_yaml` variable - `roles/custom/matrix-bridge-appservice-kakaotalk/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_appservice_kakaotalk_configuration_extension_yaml` variable
## Installing
### Set up Double Puppeting After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
Start a chat with `@kakaotalkbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `login --save EMAIL_OR_PHONE_NUMBER` to the bridge bot to enable bridging for your Kakaotalk account. The `--save` flag may be omitted, if you'd rather not save your password.
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Shared Secret Auth #### Method 1: automatically, by enabling Shared Secret Auth
The bridge will automatically perform Double Puppeting if you enable [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook. The bridge automatically performs Double Puppeting if [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
#### Method 2: manually, by asking each user to provide a working access token #### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)).
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md). - retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
@ -53,12 +75,3 @@ When using this method, **each user** that wishes to enable Double Puppeting nee
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE` - send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Appservice-Kakaotalk` device some time in the future, as that would break the Double Puppeting feature - make sure you don't log out the `Appservice-Kakaotalk` device some time in the future, as that would break the Double Puppeting feature
## Usage
Start a chat with `@kakaotalkbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).
Send `login --save EMAIL_OR_PHONE_NUMBER` to the bridge bot to enable bridging for your Kakaotalk account. The `--save` flag may be omitted, if you'd rather not save your password.
After successfully enabling bridging, you may wish to [set up Double Puppeting](#set-up-double-puppeting), if you haven't already done so.

View File

@ -1,128 +1,136 @@
# Setting up Appservice Slack (optional) # Setting up Appservice Slack bridging (optional)
**Note**: bridging to [Slack](https://slack.com) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook. **Notes**:
- Bridging to [Slack](https://slack.com) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook.
- Currently (as of November, 2024) **this component is not available for new installation unless you have already created a classic Slack application** (which the bridge makes use of in order to enable bridging between Slack and Matrix), because the creation of classic Slack applications has been discontinued since June 4 2024. The author of the bridge claims [here](https://github.com/matrix-org/matrix-appservice-slack/issues/789#issuecomment-2172947787) that he plans to support the modern Slack application and until then "the best (and only) option for new installations is to use the webhook bridging".
The playbook can install and configure [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) for you. The playbook can install and configure [matrix-appservice-slack](https://github.com/matrix-org/matrix-appservice-slack) for you.
See the project's [documentation](https://github.com/matrix-org/matrix-appservice-slack/blob/master/README.md) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/matrix-org/matrix-appservice-slack/blob/master/README.md) to learn what it does and why it might be useful to you.
## Setup Instructions: ## Prerequisites
loosely based on [this](https://github.com/matrix-org/matrix-appservice-slack#Setup) ### Create a Classic Slack App
1. Create a new Matrix room to act as the administration control room. Note its internal room ID. This can First, you need to create a Classic Slack App [here](https://api.slack.com/apps?new_classic_app=1).
be done in Element by making a message, opening the options for that message and choosing "view source". The
room ID will be displayed near the top. Name the app "matrixbot" (or anything else you'll remember). Select the team/workspace this app will belong to. Click on bot users and add a new bot user. We will use this account to bridge the the rooms.
2. Enable the bridge with the following configuration in your `vars.yml` file:
Then, click on Event Subscriptions and enable them and use the request url: `https://matrix.example.com/appservice-slack`.
Add the following events as `Bot User Events` and save:
- team_domain_change
- message.channels
- message.groups (if you want to bridge private channels)
- reaction_added
- reaction_removed
Next, click on "OAuth & Permissions" and add the following scopes:
- chat:write:bot
- users:read
- reactions:write
- files:write:user (if you want to bridge files)
**Note**: In order to make Slack files visible to Matrix users, this bridge will make Slack files visible to anyone with the url (including files in private channels). This is different than the current behavior in Slack, which only allows authenticated access to media posted in private channels. See MSC701 for details.
Click on "Install App" and "Install App to Workspace". Note the access tokens shown. You will need the Bot User OAuth Access Token and if you want to bridge files, the OAuth Access Token whenever you link a room.
### Create an administration control room on Matrix
Create a new Matrix room to act as the administration control room.
Note its internal room ID. This can be done in Element Web by sending a message, opening the options for that message and choosing "view source". The room ID will be displayed near the top.
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_appservice_slack_enabled: true matrix_appservice_slack_enabled: true
matrix_appservice_slack_control_room_id: "Your matrix admin room id" matrix_appservice_slack_control_room_id: "Your Matrix admin room ID"
# Uncomment to enable puppeting (optional, but recommended)
# matrix_appservice_slack_puppeting_enabled: true
# matrix_appservice_slack_puppeting_slackapp_client_id: "Your Classic Slack App Client ID"
# matrix_appservice_slack_puppeting_slackapp_client_secret: "Your Classic Slack App Client Secret"
# Uncomment to enable Team Sync (optional)
# See https://matrix-appservice-slack.readthedocs.io/en/latest/team_sync/
# matrix_appservice_slack_team_sync_enabled: true
``` ```
3. Enable puppeting (optional, but recommended)
```yaml
matrix_appservice_slack_puppeting_enabled: true
matrix_appservice_slack_puppeting_slackapp_client_id: "Your Classic Slack App Client ID"
matrix_appservice_slack_puppeting_slackapp_client_secret: "Your Classic Slack App Client Secret"
```
4. Enable Team Sync (optional)
```yaml
matrix_appservice_slack_team_sync_enabled: true
```
See https://matrix-appservice-slack.readthedocs.io/en/latest/team_sync/
4. If you've already installed Matrix services using the playbook before, you'll need to re-run it (`--tags=setup-all,start`). If not, proceed with [configuring other playbook services](configuring-playbook.md) and then with [Installing](installing.md). Get back to this guide once ready.
5. Invite the bridge bot user into the admin room:
```
/invite @slackbot:MY.DOMAIN
```
Note that the bot's domain is your server's domain **without the `matrix.` prefix.**
6. Create a Classic Slack App [here](https://api.slack.com/apps?new_classic_app=1).
Name the app "matrixbot" (or anything else you'll remember).
Select the team/workspace this app will belong to.
Click on bot users and add a new bot user. We will use this account to bridge the the rooms.
7. Click on Event Subscriptions and enable them and use the request url `https://matrix.DOMAIN/appservice-slack`. Then add the following events and save:
Bot User Events:
- team_domain_change
- message.channels
- message.groups (if you want to bridge private channels)
- reaction_added
- reaction_removed
8. Click on OAuth & Permissions and add the following scopes:
- chat:write:bot
- users:read
- reactions:write
If you want to bridge files, also add the following:
- files:write:user
Note: In order to make Slack files visible to matrix users, this bridge will make Slack files visible to anyone with the url (including files in private channels). This is different than the current behavior in Slack, which only allows authenticated access to media posted in private channels. See MSC701 for details.
9. Click on Install App and Install App to Workspace. Note the access tokens shown. You will need the Bot User OAuth Access Token and if you want to bridge files, the OAuth Access Token whenever you link a room.
10. If Team Sync is not enabled, for each channel you would like to bridge, perform the following steps:
* Create a Matrix room in the usual manner for your client. Take a note of its Matrix room ID - it will look something like !aBcDeF:example.com.
* Invite the bot user to both the Slack and Matrix channels you would like to bridge using `/invite @matrixbot` for slack and `/invite @slackbot:MY.DOMAIN` for matrix.
* Determine the "channel ID" that Slack uses to identify the channel. You can see it when you open a given Slack channel in a browser. The URL reads like this: `https://app.slack.com/client/XXX/<the channel id>/details/`.
* Issue a link command in the administration control room with these collected values as arguments:
with file bridging:
```
link --channel_id CHANNELID --room !the-matrix:room.id --slack_bot_token xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx --slack_user_token xoxp-xxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxx
```
without file bridging:
```
link --channel_id CHANNELID --room !the-matrix:room.id --slack_bot_token xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx
```
These arguments can be shortened to single-letter forms:
```
link -I CHANNELID -R !the-matrix:room.id -t xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx
```
Other configuration options are available via the `matrix_appservice_slack_configuration_extension_yaml` variable. Other configuration options are available via the `matrix_appservice_slack_configuration_extension_yaml` variable.
11. Unlinking ## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
Send `/invite @slackbot:example.com` to invite the bridge bot user into the admin room.
If Team Sync is not enabled, for each channel you would like to bridge, perform the following steps:
- Create a Matrix room in the usual manner for your client. Take a note of its Matrix room ID - it will look something like `!qporfwt:example.com`.
- Invite the bot user to both the Slack and Matrix channels you would like to bridge using `/invite @matrixbot` for Slack and `/invite @slackbot:example.com` for Matrix.
- Determine the "channel ID" that Slack uses to identify the channel. You can see it when you open a given Slack channel in a browser. The URL reads like this: `https://app.slack.com/client/XXX/<the channel ID>/details/`.
- Issue a link command in the administration control room with these collected values as arguments:
with file bridging:
Channels can be unlinked again like this:
``` ```
unlink --room !the-matrix:room.id link --channel_id CHANNELID --room !qporfwt:example.com --slack_bot_token xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx --slack_user_token xoxp-xxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxx
``` ```
Unlinking doesn't only disconnect the bridge, but also makes the slackbot leave the bridged matrix room. So in case you want to re-link later, don't forget to re-invite the slackbot into this room again. without file bridging:
```
link --channel_id CHANNELID --room !qporfwt:example.com --slack_bot_token xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx
```
These arguments can be shortened to single-letter forms:
```
link -I CHANNELID -R !qporfwt:example.com -t xoxb-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxx
```
### Unlinking
Channels can be unlinked again by sending this:
```
unlink --room !qporfwt:example.com
```
Unlinking doesn't only disconnect the bridge, but also makes the slackbot leave the bridged Matrix room. So in case you want to re-link later, don't forget to re-invite the slackbot into this room again.
## Troubleshooting ## Troubleshooting
* as always, check the logs: As always, check the logs: `journalctl -fu matrix-appservice-slack`
`journalctl -fu matrix-appservice-slack`
* linking: "Room is now pending-name" ### Linking: "Room is now pending-name"
This typically means that you haven't used the correct slack channel id. Unlink the room and recheck 'Determine the "channel ID"' from above.
This typically means that you haven't used the correct Slack channel ID. Unlink the room and recheck 'Determine the "channel ID"' from above.
### Messages work from Matrix to Slack, but not the other way around
* Messages work from M to S, but not the other way around
Check you logs, if they say something like Check you logs, if they say something like
`WARN SlackEventHandler Ignoring message from unrecognised slack channel id : %s (%s) <the channel id> <some other id>` `WARN SlackEventHandler Ignoring message from unrecognised Slack channel ID : %s (%s) <the channel ID> <some other ID>`
then unlink your room, reinvite the bot and re-link it again. This may particularly hit you, if you tried to unsuccessfully link then unlink your room, reinvite the bot and re-link it again. This may particularly hit you, if you tried to unsuccessfully link your room multiple times without unlinking it after each failed attempt.
your room multiple times without unlinking it after each failed attempt.

View File

@ -1,54 +1,61 @@
# Setting up Appservice Webhooks (optional) # Setting up Appservice Webhooks bridging (optional, deprecated)
The playbook can install and configure [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks) for you. **Note**: This bridge has been deprecated. We recommend not bothering with installing it. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) as a replacement, which can also be installed using [this playbook](configuring-playbook-bridge-hookshot.md). Consider using that bridge instead of this one.
Note: This bridge is no longer maintained. While not a 1:1 replacement, the bridge's author suggests taking a look at [matrix-hookshot](https://github.com/Half-Shot/matrix-hookshot) as a replacement, which can also be installed using [this playbook](configuring-playbook-bridge-hookshot.md). The playbook can install and configure [matrix-appservice-webhooks](https://github.com/turt2live/matrix-appservice-webhooks) for you. This bridge provides support for Slack-compatible webhooks.
This bridge provides support for Slack-compatible webhooks. See the project's [documentation](https://github.com/turt2live/matrix-appservice-webhooks/blob/master/README.md) to learn what it does and why it might be useful to you.
Setup Instructions: ## Adjusting the playbook configuration
loosely based on [this](https://github.com/turt2live/matrix-appservice-webhooks/blob/master/README.md) To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
1. All you basically need is to adjust your `inventory/host_vars/matrix.<domain-name>/vars.yml`:
```yaml ```yaml
matrix_appservice_webhooks_enabled: true matrix_appservice_webhooks_enabled: true
matrix_appservice_webhooks_api_secret: '<your_secret>' matrix_appservice_webhooks_api_secret: '<your_secret>'
# Uncomment to increase the verbosity of logging via `journalctl -fu matrix-appservice-webhooks.service`
# matrix_appservice_webhooks_log_level: 'verbose'
# As of Synapse 1.90.0, uncomment to enable the backwards compatibility (https://matrix-org.github.io/synapse/latest/upgrade#upgrading-to-v1900) that this bridge needs.
# Note: This deprecated method is considered insecure.
#
# matrix_synapse_configuration_extension_yaml: |
# use_appservice_legacy_authorization: true
``` ```
2. In case you want to change the verbosity of logging via `journalctl -fu matrix-appservice-webhooks.service` ## Installing
you can adjust this in `inventory/host_vars/matrix.<domain-name>/vars.yml` as well.
*Note*: default value is: `info` and availabe log levels are : `info`, `verbose` After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
```yaml <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
matrix_appservice_webhooks_log_level: '<log_level>' ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
``` ```
3. As of Synapse 1.90.0, you will need to add the following to `matrix_synapse_configuration_extension_yaml` to enable the [backwards compatibility](https://matrix-org.github.io/synapse/latest/upgrade#upgrading-to-v1900) that this bridge needs: **Notes**:
```yaml
matrix_synapse_configuration_extension_yaml: |
use_appservice_legacy_authorization: true
```
*Note*: This deprecated method is considered insecure.
4. If you've already installed Matrix services using the playbook before, you'll need to re-run it (`--tags=setup-all,start`). If not, proceed with [configuring other playbook services](configuring-playbook.md) and then with [Installing](installing.md). Get back to this guide once ready. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
5. If you're using the [Dimension Integration Manager](configuring-playbook-dimension.md), you can configure the Webhooks bridge by opening the Dimension integration manager -> Settings -> Bridges and selecting edit action for "Webhook Bridge". Press "Add self-hosted Bridge" button and populate "Provisioning URL" & "Shared Secret" values from `/matrix/appservice-webhooks/config/config.yaml` file's homeserver URL value and provisioning secret value, respectively. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
6. Invite the bridge bot user to your room: `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.
- either with `/invite @_webhook:<domain.name>` (*Note*: Make sure you have administration permissions in your room) ## Usage
- or simply add the bridge bot to a private channel (personal channels imply you being an administrator) Invite the bridge bot user to your room in either way.
- Send `/invite @_webhook:example.com` (**Note**: Make sure you have administration permissions in your room)
- Add the bridge bot to a private channel (personal channels imply you being an administrator)
You then need to send a message to the bridge bot in order to receive a private message including the webhook link:
7. Send a message to the bridge bot in order to receive a private message including the webhook link.
``` ```
!webhook !webhook
``` ```
8. The JSON body for posting messages will have to look like this: The JSON body for posting messages will have to look like this:
```json ```json
{ {
"text": "Hello world!", "text": "Hello world!",
@ -60,7 +67,7 @@ matrix_synapse_configuration_extension_yaml: |
You can test this via curl like so: You can test this via curl like so:
``` ```sh
curl --header "Content-Type: application/json" \ curl --header "Content-Type: application/json" \
--data '{ --data '{
"text": "Hello world!", "text": "Hello world!",
@ -68,5 +75,13 @@ curl --header "Content-Type: application/json" \
"displayName": "My Cool Webhook", "displayName": "My Cool Webhook",
"avatar_url": "http://i.imgur.com/IDOBtEJ.png" "avatar_url": "http://i.imgur.com/IDOBtEJ.png"
}' \ }' \
<the link you've gotten in 5.> <the webhook link you've gotten from the bridge bot>
``` ```
### Setting Webhooks with Dimension integration manager
If you're using the [Dimension integration manager](configuring-playbook-dimension.md), you can configure the Webhooks bridge with it.
To configure it, open the Dimension integration manager, and go to "Settings" and "Bridges", then select edit action for "Webhook Bridge".
On the UI, press "Add self-hosted Bridge" button and populate "Provisioning URL" and "Shared Secret" values from `/matrix/appservice-webhooks/config/config.yaml` file's homeserver URL value and provisioning secret value, respectively.

View File

@ -1,9 +1,13 @@
# Setting up Beeper Linkedin (optional) # Setting up Beeper Linkedin bridging (optional)
The playbook can install and configure [beeper-linkedin](https://github.com/beeper/linkedin) for you, for bridging to [LinkedIn](https://www.linkedin.com/) Messaging. This bridge is based on the mautrix-python framework and can be configured in a similar way to the other mautrix bridges The playbook can install and configure [beeper-linkedin](https://github.com/beeper/linkedin) for you, for bridging to [LinkedIn](https://www.linkedin.com/) Messaging. This bridge is based on the mautrix-python framework and can be configured in a similar way to the other mautrix bridges
See the project's [documentation](https://github.com/beeper/linkedin/blob/master/README.md) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/beeper/linkedin/blob/master/README.md) to learn what it does and why it might be useful to you.
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_beeper_linkedin_enabled: true matrix_beeper_linkedin_enabled: true
``` ```
@ -11,44 +15,57 @@ matrix_beeper_linkedin_enabled: true
There are some additional things you may wish to configure about the bridge before you continue. There are some additional things you may wish to configure about the bridge before you continue.
Encryption support is off by default. If you would like to enable encryption, add the following to your `vars.yml` file: Encryption support is off by default. If you would like to enable encryption, add the following to your `vars.yml` file:
```yaml ```yaml
matrix_beeper_linkedin_configuration_extension_yaml: | matrix_beeper_linkedin_bridge_encryption_allow: true
bridge: matrix_beeper_linkedin_bridge_encryption_default: true
encryption:
allow: true
default: true
``` ```
If you would like to be able to administrate the bridge from your account it can be configured like this: If you would like to be able to administrate the bridge from your account it can be configured like this:
```yaml ```yaml
matrix_beeper_linkedin_configuration_extension_yaml: | matrix_beeper_linkedin_configuration_extension_yaml: |
bridge: bridge:
permissions: permissions:
'@YOUR_USERNAME:YOUR_DOMAIN': admin '@YOUR_USERNAME:example.com': admin
``` ```
You may wish to look at `roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2` to find other things you would like to configure. You may wish to look at `roles/custom/matrix-bridge-beeper-linkedin/templates/config.yaml.j2` to find other things you would like to configure.
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Set up Double Puppeting by enabling Appservice Double Puppet or Shared Secret Auth ## Set up Double Puppeting by enabling Appservice Double Puppet or Shared Secret Auth
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future. Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future.
## Usage ## Usage
You then need to start a chat with `@linkedinbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). You then need to start a chat with `@linkedinbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `login YOUR_LINKEDIN_EMAIL_ADDRESS` to the bridge bot to enable bridging for your LinkedIn account. Send `login YOUR_LINKEDIN_EMAIL_ADDRESS` to the bridge bot to enable bridging for your LinkedIn account.
If you run into trouble, check the [Troubleshooting](#troubleshooting) section below. If you run into trouble, check the [Troubleshooting](#troubleshooting) section below.
After successfully enabling bridging, you may wish to [set up Double Puppeting](#set-up-double-puppeting), if you haven't already done so. After successfully enabling bridging, you may wish to [set up Double Puppeting](#set-up-double-puppeting-by-enabling-appservice-double-puppet-or-shared-secret-auth), if you haven't already done so.
## Troubleshooting ## Troubleshooting

View File

@ -1,23 +1,36 @@
# Setting up Go Skype Bridge (optional) # Setting up Go Skype Bridge bridging (optional)
The playbook can install and configure The playbook can install and configure [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) for you.
[go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) for you.
See the project page to learn what it does and why it might be useful to you. See the project page to learn what it does and why it might be useful to you.
To enable the [Skype](https://www.skype.com/) bridge just use the following ## Adjusting the playbook configuration
playbook configuration:
To enable the [Skype](https://www.skype.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_go_skype_bridge_enabled: true matrix_go_skype_bridge_enabled: true
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled, you need to start a chat with `Skype bridge bot` Once the bot is enabled, you need to start a chat with `Skype bridge bot` with the handle `@skypebridgebot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
with the handle `@skypebridgebot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base
domain, not the `matrix.` domain).
Send `help` to the bot to see the commands available. Send `help` to the bot to see the commands available.

View File

@ -1,4 +1,4 @@
# Setting up Heisenbridge (optional) # Setting up Heisenbridge bouncer-style IRC bridging (optional)
**Note**: bridging to [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) can also happen via the [matrix-appservice-irc](configuring-playbook-bridge-appservice-irc.md) bridge supported by the playbook. **Note**: bridging to [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) can also happen via the [matrix-appservice-irc](configuring-playbook-bridge-appservice-irc.md) bridge supported by the playbook.
@ -8,32 +8,67 @@ See the project's [README](https://github.com/hifi/heisenbridge/blob/master/READ
## Configuration ## Configuration
Below are the common configuration options that you may want to set, exhaustive list is in [the bridge's defaults var file](../roles/custom/matrix-bridge-heisenbridge/defaults/main.yml). To enable Heisenbridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
At a minimum, you only need to enable the bridge to get it up and running (`inventory/host_vars/matrix.DOMAIN/vars.yml`):
```yaml ```yaml
matrix_heisenbridge_enabled: true matrix_heisenbridge_enabled: true
# set owner (optional) # Setting the owner is optional as the first local user to DM `@heisenbridge:example.com` will be made the owner.
matrix_heisenbridge_owner: "@you:your-homeserver" # If you are not using a local user you must set it as otherwise you can't DM it at all.
matrix_heisenbridge_owner: "@you:example.com"
# to enable identd on host port 113/TCP (optional) # Uncomment to enable identd on host port 113/TCP (optional)
matrix_heisenbridge_identd_enabled: true # matrix_heisenbridge_identd_enabled: true
``` ```
By default, Heisenbrdige would be exposed on the Matrix domain (`matrix.DOMAIN`, as specified in `matrix_server_fqn_matrix`) under the `/heisenbridge` path prefix. It would handle media requests there (see the [release notes for Heisenbridge v1.15.0](https://github.com/hifi/heisenbridge/releases/tag/v1.15.0)). For a more complete list of variables that you could override, see the [`defaults/main.yml` file](../roles/custom/matrix-bridge-heisenbridge/defaults/main.yml) of the Heisenbridge Ansible role.
That's it! A registration file is automatically generated during the setup phase. ### Adjusting the Heisenbridge URL
Setting the owner is optional as the first local user to DM `@heisenbridge:your-homeserver` will be made the owner. By default, this playbook installs Heisenbridge on the `matrix.` subdomain, at the `/heisenbridge` path (https://matrix.example.com/heisenbridge). It would handle media requests there (see the [release notes for Heisenbridge v1.15.0](https://github.com/hifi/heisenbridge/releases/tag/v1.15.0)).
If you are not using a local user you must set it as otherwise you can't DM it at all.
This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
By tweaking the `matrix_heisenbridge_hostname` and `matrix_heisenbridge_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname and path prefix
matrix_heisenbridge_hostname: heisenbridge.example.com
matrix_heisenbridge_path_prefix: /
```
## Adjusting DNS records
If you've changed the default hostname, **you may need to adjust your DNS** records to point the Heisenbridge domain to the Matrix server.
See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to use the default hostname, you won't need to do any extra DNS configuration.
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
After the bridge is successfully running just DM `@heisenbridge:your-homeserver` to start setting it up. After the bridge is successfully running just DM `@heisenbridge:example.com` to start setting it up. If the bridge ignores you and a DM is not accepted then the owner setting may be wrong.
Help is available for all commands with the `-h` switch. Help is available for all commands with the `-h` switch.
If the bridge ignores you and a DM is not accepted then the owner setting may be wrong.
You can also learn the basics by watching [this demonstration video](https://www.youtube.com/watch?v=nQk1Bp4tk4I). You can also learn the basics by watching [this demonstration video](https://www.youtube.com/watch?v=nQk1Bp4tk4I).

View File

@ -1,4 +1,4 @@
# Setting up Hookshot (optional) # Setting up matrix-hookshot (optional)
The playbook can install and configure [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) for you. The playbook can install and configure [matrix-hookshot](https://github.com/matrix-org/matrix-hookshot) for you.
@ -6,8 +6,7 @@ Hookshot can bridge [Webhooks](https://en.wikipedia.org/wiki/Webhook) from softw
See the project's [documentation](https://matrix-org.github.io/matrix-hookshot/latest/hookshot.html) to learn what it does in detail and why it might be useful to you. See the project's [documentation](https://matrix-org.github.io/matrix-hookshot/latest/hookshot.html) to learn what it does in detail and why it might be useful to you.
Note: the playbook also supports [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md), which however is soon to be archived by its author and to be replaced by hookshot. **Note**: the playbook also supports [matrix-appservice-webhooks](configuring-playbook-bridge-appservice-webhooks.md), which however was deprecated by its author.
## Setup Instructions ## Setup Instructions
@ -25,22 +24,21 @@ Finally, run the playbook (see [installing](installing.md)).
### End-to-bridge encryption ### End-to-bridge encryption
You can enable [experimental encryption](https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html) for Hookshot by adding `matrix_hookshot_experimental_encryption_enabled: true` to your configuration (`vars.yml`) and [executing the playbook](installing.md) again. You can enable [encryption](https://matrix-org.github.io/matrix-hookshot/latest/advanced/encryption.html) for Hookshot by adding `matrix_hookshot_encryption_enabled: true` to your configuration (`vars.yml`) and [executing the playbook](installing.md) again.
Should the crypto store be corrupted, you can reset it by executing this Ansible playbook with the tag `reset-hookshot-encryption` added, for example `ansible-playbook -i inventory/hosts setup.yml -K --tags=reset-hookshot-encryption`). Should the crypto store be corrupted, you can reset it by executing this Ansible playbook with the tag `reset-hookshot-encryption` added, for example `ansible-playbook -i inventory/hosts setup.yml --tags=reset-hookshot-encryption`.
## Usage ## Usage
Create a room and invite the Hookshot bot (`@hookshot:DOMAIN`) to it. Create a room and invite the Hookshot bot (`@hookshot:example.com`) to it.
Make sure the bot is able to send state events (usually the Moderator power level in clients). Make sure the bot is able to send state events (usually the Moderator power level in clients).
Send a `!hookshot help` message to see a list of help commands. Send a `!hookshot help` message to see a list of help commands.
Refer to [Hookshot's documentation](https://matrix-org.github.io/matrix-hookshot/latest/usage.html) for more details about using the brige's various features. Refer to [Hookshot's documentation](https://matrix-org.github.io/matrix-hookshot/latest/usage.html) for more details about using the bridge's various features.
**Important:** Note that the different listeners are bound to certain paths which might differ from those assumed by the hookshot documentation, see [URLs for bridges setup](#urls-for-bridges-setup) below.
**Important**: Note that the different listeners are bound to certain paths which might differ from those assumed by the hookshot documentation, see [URLs for bridges setup](#urls-for-bridges-setup) below.
## More setup documentation ## More setup documentation
@ -60,7 +58,7 @@ Unless indicated otherwise, the following endpoints are reachable on your `matri
| widgets | `/hookshot/widgetapi/` | `matrix_hookshot_widgets_endpoint` | Widgets | | widgets | `/hookshot/widgetapi/` | `matrix_hookshot_widgets_endpoint` | Widgets |
| metrics | `/metrics/hookshot` | `matrix_hookshot_metrics_enabled` and exposure enabled via `matrix_hookshot_metrics_proxying_enabled` or `matrix_metrics_exposure_enabled`. Read more in the [Metrics section](#metrics) below. | Prometheus | | metrics | `/metrics/hookshot` | `matrix_hookshot_metrics_enabled` and exposure enabled via `matrix_hookshot_metrics_proxying_enabled` or `matrix_metrics_exposure_enabled`. Read more in the [Metrics section](#metrics) below. | Prometheus |
Also see the various `matrix_hookshot_container_labels_*` variables in in [default/main.yml](/roles/custom/matrix-bridge-hookshot/default/main.yml), which expose URLs publicly. Also see the various `matrix_hookshot_container_labels_*` variables in [main.yml](/roles/custom/matrix-bridge-hookshot/defaults/main.yml), which expose URLs publicly.
The different listeners are also reachable *internally* in the docker-network via the container's name (configured by `matrix_hookshot_container_url`) and on different ports (e.g. `matrix_hookshot_appservice_port`). Read [main.yml](/roles/custom/matrix-bridge-hookshot/defaults/main.yml) in detail for more info. The different listeners are also reachable *internally* in the docker-network via the container's name (configured by `matrix_hookshot_container_url`) and on different ports (e.g. `matrix_hookshot_appservice_port`). Read [main.yml](/roles/custom/matrix-bridge-hookshot/defaults/main.yml) in detail for more info.
@ -72,6 +70,7 @@ The GitHub bridge requires you to install a private key file. This can be done i
- use the [`aux` role](https://github.com/mother-of-all-self-hosting/ansible-role-aux) to copy the file from an arbitrary path on your ansible client to the correct path on the server. - use the [`aux` role](https://github.com/mother-of-all-self-hosting/ansible-role-aux) to copy the file from an arbitrary path on your ansible client to the correct path on the server.
To use the `aux` role, make sure the `matrix_hookshot_github_private_key` variable is empty. Then add the following additional configuration: To use the `aux` role, make sure the `matrix_hookshot_github_private_key` variable is empty. Then add the following additional configuration:
```yaml ```yaml
aux_file_definitions: aux_file_definitions:
- dest: "{{ matrix_hookshot_base_path }}/{{ matrix_hookshot_github_private_key_file }}" - dest: "{{ matrix_hookshot_base_path }}/{{ matrix_hookshot_github_private_key_file }}"
@ -80,6 +79,7 @@ aux_file_definitions:
owner: "{{ matrix_user_username }}" owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}" group: "{{ matrix_user_groupname }}"
``` ```
For more information, see the documentation in the [default configuration of the aux role](https://github.com/mother-of-all-self-hosting/ansible-role-aux/blob/main/defaults/main.yml). For more information, see the documentation in the [default configuration of the aux role](https://github.com/mother-of-all-self-hosting/ansible-role-aux/blob/main/defaults/main.yml).
### Provisioning API ### Provisioning API
@ -92,7 +92,7 @@ Metrics are **only enabled by default** if the builtin [Prometheus](configuring-
To explicitly enable metrics, use `matrix_hookshot_metrics_enabled: true`. This only exposes metrics over the container network, however. To explicitly enable metrics, use `matrix_hookshot_metrics_enabled: true`. This only exposes metrics over the container network, however.
**To collect metrics from an external Prometheus server**, besides enabling metrics as described above, you will also need to enable metrics exposure on `https://matrix.DOMAIN/metrics/hookshot` by: **To collect metrics from an external Prometheus server**, besides enabling metrics as described above, you will also need to enable metrics exposure on `https://matrix.example.com/metrics/hookshot` by:
- either enabling metrics exposure for Hookshot via `matrix_hookshot_metrics_proxying_enabled: true` - either enabling metrics exposure for Hookshot via `matrix_hookshot_metrics_proxying_enabled: true`
- or enabling metrics exposure for all services via `matrix_metrics_exposure_enabled: true` - or enabling metrics exposure for all services via `matrix_metrics_exposure_enabled: true`

View File

@ -1,4 +1,4 @@
# Setting up matrix-sms-bridge (optional) # Setting up Matrix SMS bridging (optional)
The playbook can install and configure [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) for you. The playbook can install and configure [matrix-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) for you.
@ -6,15 +6,15 @@ See the project page to learn what it does and why it might be useful to you.
**The bridge uses [android-sms-gateway-server](https://github.com/RebekkaMa/android-sms-gateway-server). You need to configure it first.** **The bridge uses [android-sms-gateway-server](https://github.com/RebekkaMa/android-sms-gateway-server). You need to configure it first.**
To enable the bridge just use the following ## Adjusting the playbook configuration
playbook configuration:
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_sms_bridge_enabled: true matrix_sms_bridge_enabled: true
# (optional but recommended) a room id to a default room # (optional but recommended) a room ID to a default room
matrix_sms_bridge_default_room: "" matrix_sms_bridge_default_room: ""
# (optional but recommended) configure your server location # (optional but recommended) configure your server location
matrix_sms_bridge_default_region: DE matrix_sms_bridge_default_region: DE
@ -31,6 +31,22 @@ matrix_sms_bridge_provider_android_truststore_password: 123
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage

View File

@ -1,4 +1,4 @@
# Setting up Mautrix Discord (optional) # Setting up Mautrix Discord bridging (optional)
**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) bridges supported by the playbook. **Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) and [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) bridges supported by the playbook.
- For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing. - For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing.
@ -8,16 +8,21 @@ The playbook can install and configure [mautrix-discord](https://github.com/maut
See the project's [documentation](https://docs.mau.fi/bridges/go/discord/index.html) to learn what it does and why it might be useful to you. See the project's [documentation](https://docs.mau.fi/bridges/go/discord/index.html) to learn what it does and why it might be useful to you.
## Prerequisites ## Prerequisites
There are 2 ways to login to discord using this bridge, either by [scanning a QR code](#method-1-login-using-qr-code-recommended) using the Discord mobile app **or** by using a [Discord token](#method-2-login-using-discord-token-not-recommended). There are 2 ways to login to discord using this bridge, either by [scanning a QR code](#method-1-login-using-qr-code-recommended) using the Discord mobile app **or** by using a [Discord token](#method-2-login-using-discord-token-not-recommended).
If this is a dealbreaker for you, consider using one of the other Discord bridges supported by the playbook: [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) or [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). These come with their own complexity and limitations, however, so we recommend that you proceed with this one if possible. If this is a dealbreaker for you, consider using one of the other Discord bridges supported by the playbook: [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) or [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). These come with their own complexity and limitations, however, so we recommend that you proceed with this one if possible.
## Installing ### Enable Appservice Double Puppet or Shared Secret Auth (optional)
To enable the bridge, add this to your `vars.yml` file: If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_discord_enabled: true matrix_mautrix_discord_enabled: true
@ -25,11 +30,6 @@ matrix_mautrix_discord_enabled: true
You may optionally wish to add some [Additional configuration](#additional-configuration), or to [prepare for double-puppeting](#set-up-double-puppeting) before the initial installation. You may optionally wish to add some [Additional configuration](#additional-configuration), or to [prepare for double-puppeting](#set-up-double-puppeting) before the initial installation.
After adjusting your `vars.yml` file, re-run the playbook and restart all services: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`
To make use of the bridge, see [Usage](#usage) below.
### Additional configuration ### Additional configuration
There are some additional things you may wish to configure about the bridge. There are some additional things you may wish to configure about the bridge.
@ -39,31 +39,22 @@ Take a look at:
- `roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml` for some variables that you can customize via your `vars.yml` file - `roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_mautrix_discord_configuration_extension_yaml` variable - `roles/custom/matrix-bridge-mautrix-discord/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_mautrix_discord_configuration_extension_yaml` variable
## Installing
### Set up Double Puppeting After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
#### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth **Notes**:
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future.
#### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)).
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-Discord` device some time in the future, as that would break the Double Puppeting feature
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
@ -81,13 +72,37 @@ To acquire the token, open Discord in a private browser window. Then open the de
### Bridging ### Bridging
1. Start a chat with `@discordbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). 1. Start a chat with `@discordbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
2. If you would like to login to Discord using a token, send `login-token` command, otherwise, send `login-qr` command. 2. If you would like to login to Discord using a token, send `login-token` command, otherwise, send `login-qr` command.
3. You'll see a QR code which you need to scan with the Discord app on your phone. You can scan it with the camera app too, which will open Discord, which will then instruct you to scan it a 2nd time in the Discord app. 3. You'll see a QR code which you need to scan with the Discord app on your phone. You can scan it with the camera app too, which will open Discord, which will then instruct you to scan it a 2nd time in the Discord app.
4. After confirming (in the Discord app) that you'd like to allow this login, the bot should respond with "Succcessfully authenticated as ..." 4. After confirming (in the Discord app) that you'd like to allow this login, the bot should respond with "Succcessfully authenticated as ..."
5. Now that you're logged in, you can send a `help` command to the bot again, to see additional commands you have access to 5. Now that you're logged in, you can send a `help` command to the bot again, to see additional commands you have access to
6. Some Direct Messages from Discord should start syncing automatically 6. Some Direct Messages from Discord should start syncing automatically
7. If you'd like to bridge guilds: 7. If you'd like to bridge guilds:
- send `guilds status` to see the list of guilds - send `guilds status` to see the list of guilds
- for each guild that you'd like bridged, send `guilds bridge GUILD_ID --entire` - for each guild that you'd like bridged, send `guilds bridge GUILD_ID --entire`
8. You may wish to uninstall the Discord app from your phone now. It's not needed for the bridge to function. 8. You may wish to uninstall the Discord app from your phone now. It's not needed for the bridge to function.
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future.
#### Method 2: manually, by asking each user to provide a working access token
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-Discord` device some time in the future, as that would break the Double Puppeting feature

View File

@ -1,11 +1,21 @@
# Setting up Mautrix Facebook (optional) # Setting up Mautrix Facebook bridging (optional, deprecated)
**Note**: bridging to Facebook [Messenger](https://messenger.com) via this bridge is being [superseded by a new bridge - mautrix-meta](https://github.com/mautrix/facebook/issues/332). For now, the mautrix-facebook bridge continues to work, but the new [mautrix-meta-messenger bridge](./configuring-playbook-bridge-mautrix-meta-messenger.md) is better and more supported. Consider using that bridge instead of this one. **Note**: This bridge has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, which can be installed using [this playbook](configuring-playbook-bridge-mautrix-meta-messenger.md). Consider using that bridge instead of this one.
The playbook can install and configure [mautrix-facebook](https://github.com/mautrix/facebook) for you. The playbook can install and configure [mautrix-facebook](https://github.com/mautrix/facebook) for you.
See the project's [documentation](https://github.com/mautrix/facebook/blob/master/ROADMAP.md) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/mautrix/facebook/blob/master/ROADMAP.md) to learn what it does and why it might be useful to you.
## Prerequisite (optional)
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_facebook_enabled: true matrix_mautrix_facebook_enabled: true
``` ```
@ -13,6 +23,7 @@ matrix_mautrix_facebook_enabled: true
There are some additional things you may wish to configure about the bridge before you continue. There are some additional things you may wish to configure about the bridge before you continue.
Encryption support is off by default. If you would like to enable encryption, add the following to your `vars.yml` file: Encryption support is off by default. If you would like to enable encryption, add the following to your `vars.yml` file:
```yaml ```yaml
matrix_mautrix_facebook_configuration_extension_yaml: | matrix_mautrix_facebook_configuration_extension_yaml: |
bridge: bridge:
@ -22,6 +33,7 @@ matrix_mautrix_facebook_configuration_extension_yaml: |
``` ```
If you would like to be able to administrate the bridge from your account it can be configured like this: If you would like to be able to administrate the bridge from your account it can be configured like this:
```yaml ```yaml
matrix_mautrix_facebook_configuration_extension_yaml: | matrix_mautrix_facebook_configuration_extension_yaml: |
bridge: bridge:
@ -43,20 +55,44 @@ matrix_mautrix_facebook_configuration_extension_yaml: |
You may wish to look at `roles/custom/matrix-bridge-mautrix-facebook/templates/config.yaml.j2` and `roles/custom/matrix-bridge-mautrix-facebook/defaults/main.yml` to find other things you would like to configure. You may wish to look at `roles/custom/matrix-bridge-mautrix-facebook/templates/config.yaml.j2` and `roles/custom/matrix-bridge-mautrix-facebook/defaults/main.yml` to find other things you would like to configure.
## Installing
## Set up Double Puppeting After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
### Method 1: automatically, by enabling Shared Secret Auth **Notes**:
The bridge will automatically perform Double Puppeting if you enable [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
You then need to start a chat with `@facebookbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `login YOUR_FACEBOOK_EMAIL_ADDRESS` to the bridge bot to enable bridging for your Facebook Messenger account. You can learn more here about authentication from the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/facebook/authentication.html).
If you run into trouble, check the [Troubleshooting](#troubleshooting) section below.
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Shared Secret Auth
The bridge automatically performs Double Puppeting if [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
### Method 2: manually, by asking each user to provide a working access token #### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)).
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
@ -66,18 +102,6 @@ When using this method, **each user** that wishes to enable Double Puppeting nee
- make sure you don't log out the `Mautrix-Facebook` device some time in the future, as that would break the Double Puppeting feature - make sure you don't log out the `Mautrix-Facebook` device some time in the future, as that would break the Double Puppeting feature
## Usage
You then need to start a chat with `@facebookbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).
Send `login YOUR_FACEBOOK_EMAIL_ADDRESS` to the bridge bot to enable bridging for your Facebook Messenger account. You can learn more here about authentication from the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/facebook/authentication.html).
If you run into trouble, check the [Troubleshooting](#troubleshooting) section below.
After successfully enabling bridging, you may wish to [set up Double Puppeting](#set-up-double-puppeting), if you haven't already done so.
## Troubleshooting ## Troubleshooting
### Facebook rejecting login attempts and forcing you to change password ### Facebook rejecting login attempts and forcing you to change password
@ -90,8 +114,8 @@ The easiest way to do this may be to use [sshuttle](https://sshuttle.readthedocs
Example command for proxying your traffic through the Matrix server: Example command for proxying your traffic through the Matrix server:
``` ```sh
sshuttle -r root@matrix.DOMAIN:22 0/0 sshuttle -r root@matrix.example.com:22 0/0
``` ```
Once connected, you should be able to verify that you're browsing the web through the Matrix server's IP by checking [icanhazip](https://icanhazip.com/). Once connected, you should be able to verify that you're browsing the web through the Matrix server's IP by checking [icanhazip](https://icanhazip.com/).
@ -100,4 +124,4 @@ Then proceed to log in to [Facebook/Messenger](https://www.facebook.com/).
Once logged in, proceed to [set up bridging](#usage). Once logged in, proceed to [set up bridging](#usage).
If that doesn't work, enable 2FA [Facebook help page on enabling 2FA](https://www.facebook.com/help/148233965247823) and try to login again with a new password, and entering the 2FA code when prompted, it may take more then one try, in between attempts, check facebook.com to see if they are requiring another password change If that doesn't work, enable 2FA (see: [Facebook help page on enabling 2FA](https://www.facebook.com/help/148233965247823)) and try to login again with a new password, and entering the 2FA code when prompted, it may take more then one try, in between attempts, check facebook.com to see if they are requiring another password change

View File

@ -1,30 +1,57 @@
# Setting up Mautrix gmessages (optional) # Setting up Mautrix Google Messages bridging (optional)
The playbook can install and configure [mautrix-gmessages](https://github.com/mautrix/gmessages) for you, for bridging to [Google Messages](https://messages.google.com/). The playbook can install and configure [mautrix-gmessages](https://github.com/mautrix/gmessages) for you, for bridging to [Google Messages](https://messages.google.com/).
See the project's [documentation](https://docs.mau.fi/bridges/go/gmessages/index.html) to learn what it does and why it might be useful to you. See the project's [documentation](https://docs.mau.fi/bridges/go/gmessages/index.html) to learn what it does and why it might be useful to you.
Use the following playbook configuration: ## Prerequisite (optional)
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_gmessages_enabled: true matrix_mautrix_gmessages_enabled: true
``` ```
## Set up Double Puppeting ## Installing
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. **Notes**:
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
### Method 2: manually, by asking each user to provide a working access token `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**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)). ## Usage
You then need to start a chat with `@gmessagesbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service is configured and enabled on the server for this playbook.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
#### Method 2: manually, by asking each user to provide a working access token
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
@ -33,8 +60,3 @@ When using this method, **each user** that wishes to enable Double Puppeting nee
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE` - send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-gmessages` device some time in the future, as that would break the Double Puppeting feature - make sure you don't log out the `Mautrix-gmessages` device some time in the future, as that would break the Double Puppeting feature
## Usage
You then need to start a chat with `@gmessagesbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).

View File

@ -1,46 +1,43 @@
# Setting up Mautrix Google Chat (optional) # Setting up Mautrix Google Chat bridging (optional)
The playbook can install and configure [mautrix-googlechat](https://github.com/mautrix/googlechat) for you. The playbook can install and configure [mautrix-googlechat](https://github.com/mautrix/googlechat) for you.
See the project's [documentation](https://docs.mau.fi/bridges/python/googlechat/index.html) to learn what it does and why it might be useful to you. See the project's [documentation](https://docs.mau.fi/bridges/python/googlechat/index.html) to learn what it does and why it might be useful to you.
To enable the [Google Chat](https://chat.google.com/) bridge just use the following playbook configuration: ## Prerequisite (optional)
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the [Google Chat](https://chat.google.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_googlechat_enabled: true matrix_mautrix_googlechat_enabled: true
``` ```
## Installing
## Set up Double Puppeting After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth **Notes**:
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future.
### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)).
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-googlechat` device some time in the future, as that would break the Double Puppeting feature
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled you need to start a chat with `googlechat bridge bot` with handle `@googlechatbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). Once the bot is enabled you need to start a chat with `googlechat bridge bot` with handle `@googlechatbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `login` to the bridge bot to receive a link to the portal from which you can enable the bridging. Open the link sent by the bot and follow the instructions. Send `login` to the bridge bot to receive a link to the portal from which you can enable the bridging. Open the link sent by the bot and follow the instructions.
@ -50,5 +47,26 @@ Once logged in, recent chats should show up as new conversations automatically.
You can learn more about authentication from the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/googlechat/authentication.html). You can learn more about authentication from the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/googlechat/authentication.html).
After successfully enabling bridging, you may wish to [set up Double Puppeting](#set-up-double-puppeting), if you haven't already done so. ### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future.
#### Method 2: manually, by asking each user to provide a working access token
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-googlechat` device some time in the future, as that would break the Double Puppeting feature

View File

@ -1,46 +1,45 @@
# The [Mautrix Hangouts Bridge](https://mau.dev/mautrix/hangouts) is no longer maintained. It has changed to a [Google Chat Bridge](https://github.com/mautrix/googlechat). Setup instructions for the Google Chat Bridge can be [found here](configuring-playbook-bridge-mautrix-googlechat.md). # Setting up Mautrix Hangouts bridging (optional, deprecated)
# Setting up Mautrix Hangouts (optional) **Note**: This bridge has been deprecated in favor of [Google Chat bridge](https://github.com/mautrix/googlechat), which can be installed using [this playbook](configuring-playbook-bridge-mautrix-googlechat.md). Consider using that bridge instead of this one.
The playbook can install and configure [mautrix-hangouts](https://github.com/mautrix/hangouts) for you. The playbook can install and configure [mautrix-hangouts](https://github.com/mautrix/hangouts) for you.
See the project's [documentation](https://docs.mau.fi/bridges/python/hangouts/index.html) to learn what it does and why it might be useful to you. See the project's [documentation](https://docs.mau.fi/bridges/python/hangouts/index.html) to learn what it does and why it might be useful to you.
To enable the [Google Hangouts](https://hangouts.google.com/) bridge just use the following playbook configuration: ## Prerequisite (optional)
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the [Google Hangouts](https://hangouts.google.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_hangouts_enabled: true matrix_mautrix_hangouts_enabled: true
``` ```
## Installing
## Set up Double Puppeting After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
### Method 1: automatically, by enabling Shared Secret Auth **Notes**:
The bridge will automatically perform Double Puppeting if you enable [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)).
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-Hangouts` device some time in the future, as that would break the Double Puppeting feature
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled you need to start a chat with `Hangouts bridge bot` with handle `@hangoutsbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). Once the bot is enabled you need to start a chat with `Hangouts bridge bot` with handle `@hangoutsbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `login` to the bridge bot to receive a link to the portal from which you can enable the bridging. Open the link sent by the bot and follow the instructions. Send `login` to the bridge bot to receive a link to the portal from which you can enable the bridging. Open the link sent by the bot and follow the instructions.
@ -50,5 +49,24 @@ Once logged in, recent chats should show up as new conversations automatically.
You can learn more about authentication from the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/hangouts/authentication.html). You can learn more about authentication from the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/hangouts/authentication.html).
After successfully enabling bridging, you may wish to [set up Double Puppeting](#set-up-double-puppeting), if you haven't already done so. ### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Shared Secret Auth
The bridge automatically performs Double Puppeting if [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
#### Method 2: manually, by asking each user to provide a working access token
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-Hangouts` device some time in the future, as that would break the Double Puppeting feature

View File

@ -1,17 +1,23 @@
# Setting up Mautrix Instagram (optional) # Setting up Mautrix Instagram bridging (optional, deprecated)
**Note**: bridging to Facebook [Instagram](https://instagram.com) via this bridge is being [superseded by a new bridge - mautrix-meta](https://github.com/mautrix/facebook/issues/332). For now, the mautrix-instagram bridge continues to work, but the new [mautrix-meta-instagram bridge](./configuring-playbook-bridge-mautrix-meta-instagram.md) is better and more supported. Consider using that bridge instead of this one. **Note**: This bridge has been deprecated in favor of the [mautrix-meta](https://github.com/mautrix/meta) Messenger/Instagram bridge, which can be installed using [this playbook](configuring-playbook-bridge-mautrix-meta-instagram.md). Consider using that bridge instead of this one.
The playbook can install and configure [mautrix-instagram](https://github.com/mautrix/instagram) for you. The playbook can install and configure [mautrix-instagram](https://github.com/mautrix/instagram) for you.
See the project's [documentation](https://docs.mau.fi/bridges/python/instagram/index.html) to learn what it does and why it might be useful to you. See the project's [documentation](https://docs.mau.fi/bridges/python/instagram/index.html) to learn what it does and why it might be useful to you.
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_instagram_enabled: true matrix_mautrix_instagram_enabled: true
``` ```
There are some additional things you may wish to configure about the bridge before you continue. There are some additional things you may wish to configure about the bridge before you continue.
Encryption support is off by default. If you would like to enable encryption, add the following to your `vars.yml` file: Encryption support is off by default. If you would like to enable encryption, add the following to your `vars.yml` file:
```yaml ```yaml
matrix_mautrix_instagram_configuration_extension_yaml: | matrix_mautrix_instagram_configuration_extension_yaml: |
bridge: bridge:
@ -21,6 +27,7 @@ matrix_mautrix_instagram_configuration_extension_yaml: |
``` ```
If you would like to be able to administrate the bridge from your account it can be configured like this: If you would like to be able to administrate the bridge from your account it can be configured like this:
```yaml ```yaml
# The easy way. The specified Matrix user ID will be made an admin of all bridges # The easy way. The specified Matrix user ID will be made an admin of all bridges
matrix_admin: "@YOUR_USERNAME:{{ matrix_domain }}" matrix_admin: "@YOUR_USERNAME:{{ matrix_domain }}"
@ -30,15 +37,31 @@ matrix_admin: "@YOUR_USERNAME:{{ matrix_domain }}"
matrix_mautrix_instagram_configuration_extension_yaml: | matrix_mautrix_instagram_configuration_extension_yaml: |
bridge: bridge:
permissions: permissions:
'@YOUR_USERNAME:YOUR_DOMAIN': admin '@YOUR_USERNAME:example.com': admin
``` ```
You may wish to look at `roles/custom/matrix-bridge-mautrix-instagram/templates/config.yaml.j2` and `roles/custom/matrix-bridge-mautrix-instagram/defaults/main.yml` to find other things you would like to configure. You may wish to look at `roles/custom/matrix-bridge-mautrix-instagram/templates/config.yaml.j2` and `roles/custom/matrix-bridge-mautrix-instagram/defaults/main.yml` to find other things you would like to configure.
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
You then need to start a chat with `@instagrambot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). You then need to start a chat with `@instagrambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `login YOUR_INSTAGRAM_EMAIL_ADDRESS YOUR_INSTAGRAM_PASSWORD` to the bridge bot to enable bridging for your instagram/Messenger account. Send `login YOUR_INSTAGRAM_EMAIL_ADDRESS YOUR_INSTAGRAM_PASSWORD` to the bridge bot to enable bridging for your instagram/Messenger account.

View File

@ -6,24 +6,28 @@ Since this bridge component can bridge to both [Messenger](https://messenger.com
This documentation page only deals with the bridge's ability to bridge to Instagram. For bridging to Facebook/Messenger, see [Setting up Messenger bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-messenger.md). This documentation page only deals with the bridge's ability to bridge to Instagram. For bridging to Facebook/Messenger, see [Setting up Messenger bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-messenger.md).
## Prerequisites
## Migrating from the old mautrix-instagram bridge ### Migrating from the old mautrix-instagram bridge
If you've been using the [mautrix-instagram](./configuring-playbook-bridge-mautrix-instagram.md) bridge, **you'd better get rid of it first** or the 2 bridges will be in conflict: If you've been using the [mautrix-instagram](./configuring-playbook-bridge-mautrix-instagram.md) bridge, **you'd better get rid of it first** or the 2 bridges will be in conflict:
- both trying to use `@instagrambot:YOUR_DOMAIN` as their username. This conflict may be resolved by adjusting `matrix_mautrix_instagram_appservice_bot_username` or `matrix_mautrix_meta_instagram_appservice_username` - both trying to use `@instagrambot:example.com` as their username. This conflict may be resolved by adjusting `matrix_mautrix_instagram_appservice_bot_username` or `matrix_mautrix_meta_instagram_appservice_username`
- both trying to bridge the same DMs - both trying to bridge the same DMs
To do so, send a `clean-rooms` command to the management room with the old bridge bot (`@instagrambot:YOUR_DOMAIN`). To do so, send a `clean-rooms` command to the management room with the old bridge bot (`@instagrambot:example.com`). It gives you a list of portals and groups of portals you may purge. Proceed with sending commands like `clean recommended`, etc.
This would give you a list of portals and groups of portals you may purge. Proceed with sending commands like `clean recommended`, etc.
Then, consider disabling the old bridge in your configuration, so it won't recreate the portals when you receive new messages. Then, consider disabling the old bridge in your configuration, so it won't recreate the portals when you receive new messages.
### Enable Appservice Double Puppet (optional)
## Configuration If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook.
Most simply, you can enable the bridge with the following playbook configuration: For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_meta_instagram_enabled: true matrix_mautrix_meta_instagram_enabled: true
@ -44,39 +48,59 @@ Different levels of permission can be granted to users:
The permissions are following the sequence: nothing < `relay` < `user` < `admin`. The permissions are following the sequence: nothing < `relay` < `user` < `admin`.
The default permissions are set via `matrix_mautrix_meta_instagram_bridge_permissions_default` and are somewhat like this: The default permissions are set via `matrix_mautrix_meta_instagram_bridge_permissions_default` and are somewhat like this:
```yaml ```yaml
matrix_mautrix_meta_instagram_bridge_permissions_default: matrix_mautrix_meta_instagram_bridge_permissions_default:
'*': relay '*': relay
YOUR_DOMAIN: user example.com: user
'{{ matrix_admin }}': admin '{{ matrix_admin }}': admin
``` ```
If you don't define the `matrix_admin` in your configuration (e.g. `matrix_admin: @user:YOUR_DOMAIN`), then there's no admin by default. If you don't define the `matrix_admin` in your configuration (e.g. `matrix_admin: @user:example.com`), then there's no admin by default.
You may redefine `matrix_mautrix_meta_instagram_bridge_permissions_default` any way you see fit, or add extra permissions using `matrix_mautrix_meta_instagram_bridge_permissions_custom` like this: You may redefine `matrix_mautrix_meta_instagram_bridge_permissions_default` any way you see fit, or add extra permissions using `matrix_mautrix_meta_instagram_bridge_permissions_custom` like this:
```yaml ```yaml
matrix_mautrix_meta_instagram_bridge_permissions_custom: matrix_mautrix_meta_instagram_bridge_permissions_custom:
'@YOUR_USERNAME:YOUR_DOMAIN': admin '@YOUR_USERNAME:example.com': admin
``` ```
You may wish to look at `roles/custom/matrix-bridge-mautrix-meta-instagram/templates/config.yaml.j2` to find more information on the permissions settings and other options you would like to configure. You may wish to look at `roles/custom/matrix-bridge-mautrix-meta-instagram/templates/config.yaml.j2` to find more information on the permissions settings and other options you would like to configure.
## Set up Double Puppeting ## Installing
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. **Notes**:
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
### Method 2: manually, by asking each user to provide a working access token `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**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)). ## Usage
You then need to start a chat with `@instagrambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service is configured and enabled on the server for this playbook.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
#### Method 2: manually, by asking each user to provide a working access token
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
@ -85,8 +109,3 @@ When using this method, **each user** that wishes to enable Double Puppeting nee
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE` - send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the session for which you obtained an access token some time in the future, as that would break the Double Puppeting feature - make sure you don't log out the session for which you obtained an access token some time in the future, as that would break the Double Puppeting feature
## Usage
You then need to start a chat with `@instagrambot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).

View File

@ -6,21 +6,27 @@ Since this bridge component can bridge to both [Messenger](https://messenger.com
This documentation page only deals with the bridge's ability to bridge to Facebook Messenger. For bridging to Instagram, see [Setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md). This documentation page only deals with the bridge's ability to bridge to Facebook Messenger. For bridging to Instagram, see [Setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md).
## Prerequisites
## Migrating from the old mautrix-facebook bridge ### Migrating from the old mautrix-facebook bridge
If you've been using the [mautrix-facebook](./configuring-playbook-bridge-mautrix-facebook.md) bridge, it's possible to migrate the database using [instructions from the bridge documentation](https://docs.mau.fi/bridges/go/meta/facebook-migration.html) (advanced). If you've been using the [mautrix-facebook](./configuring-playbook-bridge-mautrix-facebook.md) bridge, it's possible to migrate the database using [instructions from the bridge documentation](https://docs.mau.fi/bridges/go/meta/facebook-migration.html) (advanced).
Then you may wish to get rid of the Facebook bridge. To do so, send a `clean-rooms` command to the management room with the old bridge bot (`@facebookbot:YOUR_DOMAIN`). Then you may wish to get rid of the Facebook bridge. To do so, send a `clean-rooms` command to the management room with the old bridge bot (`@facebookbot:example.com`). It gives you a list of portals and groups of portals you may purge. Proceed with sending commands like `clean recommended`, etc.
This would give you a list of portals and groups of portals you may purge. Proceed with sending commands like `clean recommended`, etc.
Then, consider disabling the old bridge in your configuration, so it won't recreate the portals when you receive new messages. Then, consider disabling the old bridge in your configuration, so it won't recreate the portals when you receive new messages.
**Note**: the user ID of the new bridge bot is `@messengerbot:example.com`, not `@facebookbot:example.com`. After disabling the old bridge, its bot user will stop responding to a command.
## Configuration ### Enable Appservice Double Puppet (optional)
Most simply, you can enable the bridge with the following playbook configuration: If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_meta_messenger_enabled: true matrix_mautrix_meta_messenger_enabled: true
@ -31,6 +37,7 @@ Before proceeding to [re-running the playbook](./installing.md), you may wish to
### Bridge mode ### Bridge mode
As mentioned above, the [mautrix-meta](https://github.com/mautrix/meta) bridge supports multiple modes of operation. As mentioned above, the [mautrix-meta](https://github.com/mautrix/meta) bridge supports multiple modes of operation.
The bridge can pull your Messenger messages via 3 different methods: The bridge can pull your Messenger messages via 3 different methods:
- (`facebook`) Facebook via `facebook.com` - (`facebook`) Facebook via `facebook.com`
@ -41,7 +48,6 @@ You may switch the mode via the `matrix_mautrix_meta_messenger_meta_mode` variab
Note that switching the mode (especially between `facebook*` and `messenger`) will intentionally make the bridge use another database (`matrix_mautrix_meta_facebook` or `matrix_mautrix_meta_messenger`) to isolate the 2 instances. Switching between Tor and non-Tor may be possible without dataloss, but your mileage may vary. Before switching to a new mode, you may wish to de-configure the old one (send `help` to the bridge bot and unbridge your portals, etc.). Note that switching the mode (especially between `facebook*` and `messenger`) will intentionally make the bridge use another database (`matrix_mautrix_meta_facebook` or `matrix_mautrix_meta_messenger`) to isolate the 2 instances. Switching between Tor and non-Tor may be possible without dataloss, but your mileage may vary. Before switching to a new mode, you may wish to de-configure the old one (send `help` to the bridge bot and unbridge your portals, etc.).
### Bridge permissions ### Bridge permissions
By default, any user on your homeserver will be able to use the bridge. By default, any user on your homeserver will be able to use the bridge.
@ -55,39 +61,63 @@ Different levels of permission can be granted to users:
The permissions are following the sequence: nothing < `relay` < `user` < `admin`. The permissions are following the sequence: nothing < `relay` < `user` < `admin`.
The default permissions are set via `matrix_mautrix_meta_messenger_bridge_permissions_default` and are somewhat like this: The default permissions are set via `matrix_mautrix_meta_messenger_bridge_permissions_default` and are somewhat like this:
```yaml ```yaml
matrix_mautrix_meta_messenger_bridge_permissions_default: matrix_mautrix_meta_messenger_bridge_permissions_default:
'*': relay '*': relay
YOUR_DOMAIN: user example.com: user
'{{ matrix_admin }}': admin '{{ matrix_admin }}': admin
``` ```
If you don't define the `matrix_admin` in your configuration (e.g. `matrix_admin: @user:YOUR_DOMAIN`), then there's no admin by default. If you don't define the `matrix_admin` in your configuration (e.g. `matrix_admin: @user:example.com`), then there's no admin by default.
You may redefine `matrix_mautrix_meta_messenger_bridge_permissions_default` any way you see fit, or add extra permissions using `matrix_mautrix_meta_messenger_bridge_permissions_custom` like this: You may redefine `matrix_mautrix_meta_messenger_bridge_permissions_default` any way you see fit, or add extra permissions using `matrix_mautrix_meta_messenger_bridge_permissions_custom` like this:
```yaml ```yaml
matrix_mautrix_meta_messenger_bridge_permissions_custom: matrix_mautrix_meta_messenger_bridge_permissions_custom:
'@YOUR_USERNAME:YOUR_DOMAIN': admin '@YOUR_USERNAME:example.com': admin
``` ```
You may wish to look at `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2` to find more information on the permissions settings and other options you would like to configure. You may wish to look at `roles/custom/matrix-bridge-mautrix-meta-messenger/templates/config.yaml.j2` to find more information on the permissions settings and other options you would like to configure.
## Set up Double Puppeting ## Installing
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. **Notes**:
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
### Method 2: manually, by asking each user to provide a working access token `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**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)). ## Usage
You then need to start a chat with `@messengerbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain). Note that the user ID of the bridge's bot is not `@facebookbot:example.com`.
You then need to send a `login` command and follow the bridge bot's instructions.
Given that the bot is configured in `messenger` [bridge mode](#bridge-mode) by default, you will need to log in to [messenger.com](https://messenger.com/) (not `facebook.com`!) and obtain the cookies from there as per [the bridge's authentication instructions](https://docs.mau.fi/bridges/go/meta/authentication.html).
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service is configured and enabled on the server for this playbook.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
#### Method 2: manually, by asking each user to provide a working access token
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
@ -96,12 +126,3 @@ When using this method, **each user** that wishes to enable Double Puppeting nee
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE` - send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the session for which you obtained an access token some time in the future, as that would break the Double Puppeting feature - make sure you don't log out the session for which you obtained an access token some time in the future, as that would break the Double Puppeting feature
## Usage
You then need to start a chat with `@messengerbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).
You then need to send a `login` command and follow the bridge bot's instructions.
Given that the bot is configured in `messenger` [bridge mode](#bridge-mode) by default, you will need to log in to [messenger.com](https://messenger.com/) (not `facebook.com`!) and obtain the cookies from there as per [the bridge's authentication instructions](https://docs.mau.fi/bridges/go/meta/authentication.html).

View File

@ -1,14 +1,28 @@
# Setting up Mautrix Signal (optional) # Setting up Mautrix Signal bridging (optional)
The playbook can install and configure [mautrix-signal](https://github.com/mautrix/signal) for you. The playbook can install and configure [mautrix-signal](https://github.com/mautrix/signal) for you.
See the project's [documentation](https://docs.mau.fi/bridges/python/signal/index.html) to learn what it does and why it might be useful to you. See the project's [documentation](https://docs.mau.fi/bridges/python/signal/index.html) to learn what it does and why it might be useful to you.
**Note/Prerequisite**: If you're running with the Postgres database server integrated by the playbook (which is the default), you don't need to do anything special and can easily proceed with installing. However, if you're [using an external Postgres server](configuring-playbook-external-postgres.md), you'd need to manually prepare a Postgres database for this bridge and adjust the variables related to that (`matrix_mautrix_signal_database_*`).
**Note**: This revamped version of the [mautrix-signal (legacy)](configuring-playbook-bridge-mautrix-signal.md) may increase the CPU usage of your homeserver. **Note**: This revamped version of the [mautrix-signal (legacy)](configuring-playbook-bridge-mautrix-signal.md) may increase the CPU usage of your homeserver.
Use the following playbook configuration: ## Prerequisites (optional)
### Prepare Postgres database on external Postgres server
If you're running with the Postgres database server integrated by the playbook (which is the default), you don't need to do anything special and can easily proceed with installing.
However, if you're [using an external Postgres server](configuring-playbook-external-postgres.md), you'd need to manually prepare a Postgres database for this bridge and adjust the variables related to that (`matrix_mautrix_signal_database_*`).
### Enable Appservice Double Puppet
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_signal_enabled: true matrix_mautrix_signal_enabled: true
@ -27,44 +41,68 @@ Different levels of permission can be granted to users:
The permissions are following the sequence: nothing < relay < user < admin. The permissions are following the sequence: nothing < relay < user < admin.
The default permissions are set as follows: The default permissions are set as follows:
```yaml ```yaml
permissions: permissions:
'*': relay '*': relay
YOUR_DOMAIN: user example.com: user
``` ```
If you want to augment the preset permissions, you might want to set the additional permissions with the following settings in your `vars.yml` file: If you want to augment the preset permissions, you might want to set the additional permissions with the following settings in your `vars.yml` file:
```yaml ```yaml
matrix_mautrix_signal_configuration_extension_yaml: | matrix_mautrix_signal_configuration_extension_yaml: |
bridge: bridge:
permissions: permissions:
'@YOUR_USERNAME:YOUR_DOMAIN': admin '@YOUR_USERNAME:example.com': admin
``` ```
This will add the admin permission to the specific user, while keeping the default permissions. This will add the admin permission to the specific user, while keeping the default permissions.
In case you want to replace the default permissions settings **completely**, populate the following item within your `vars.yml` file: In case you want to replace the default permissions settings **completely**, populate the following item within your `vars.yml` file:
```yaml ```yaml
matrix_mautrix_signal_bridge_permissions: matrix_mautrix_signal_bridge_permissions:
'@ADMIN:YOUR_DOMAIN': admin '@ADMIN:example.com': admin
'@USER:YOUR_DOMAIN' : user '@USER:example.com' : user
``` ```
You may wish to look at `roles/custom/matrix-bridge-mautrix-signal/templates/config.yaml.j2` to find more information on the permissions settings and other options you would like to configure. You may wish to look at `roles/custom/matrix-bridge-mautrix-signal/templates/config.yaml.j2` to find more information on the permissions settings and other options you would like to configure.
## Set up Double Puppeting ## Installing
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
### Method 1: automatically, by enabling Appservice Double Puppet <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook. **Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
You then need to start a chat with `@signalbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service is configured and enabled on the server for this playbook.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
### Method 2: manually, by asking each user to provide a working access token #### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)).
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
@ -73,8 +111,3 @@ When using this method, **each user** that wishes to enable Double Puppeting nee
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE` - send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-Signal` device some time in the future, as that would break the Double Puppeting feature - make sure you don't log out the `Mautrix-Signal` device some time in the future, as that would break the Double Puppeting feature
## Usage
You then need to start a chat with `@signalbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).

View File

@ -1,7 +1,7 @@
# Setting up Mautrix Slack (optional) # Setting up Mautrix Slack bridging (optional)
**Note**: bridging to [Slack](https://slack.com/) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridges supported by the playbook. **Note**: bridging to [Slack](https://slack.com/) can also happen via the [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) and [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridges supported by the playbook.
- For using as a Bot we recommend the [Appservice Slack](configuring-playbook-bridge-appservice-slack.md), because it supports plumbing. - For using as a Bot we recommend the [Appservice Slack](configuring-playbook-bridge-appservice-slack.md), because it supports plumbing. Note that it is not available for new installation unless you have already created a classic Slack application, because the creation of classic Slack applications, which this bridge makes use of, has been discontinued.
- For personal use with a slack account we recommend the `mautrix-slack` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Slack bridges supported by the playbook. - For personal use with a slack account we recommend the `mautrix-slack` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Slack bridges supported by the playbook.
The playbook can install and configure [mautrix-slack](https://github.com/mautrix/slack) for you. The playbook can install and configure [mautrix-slack](https://github.com/mautrix/slack) for you.
@ -10,17 +10,21 @@ See the project's [documentation](https://docs.mau.fi/bridges/go/slack/index.htm
See the [features and roadmap](https://github.com/mautrix/slack/blob/main/ROADMAP.md) for more information. See the [features and roadmap](https://github.com/mautrix/slack/blob/main/ROADMAP.md) for more information.
## Prerequisites ## Prerequisites
For using this bridge, you would need to authenticate by **providing your username and password** (legacy) or by using a **token login**. See more information in the [docs](https://docs.mau.fi/bridges/go/slack/authentication.html). For using this bridge, you would need to authenticate by **providing your username and password** (legacy) or by using a **token login**. See more information in the [docs](https://docs.mau.fi/bridges/go/slack/authentication.html).
Note that neither of these methods are officially supported by Slack. [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) uses a Slack bot account which is the only officially supported method for bridging a Slack channel. Note that neither of these methods are officially supported by Slack. [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) uses a Slack bot account which is the only officially supported method for bridging a Slack channel.
### Enable Appservice Double Puppet (optional)
## Installing If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook.
To enable the bridge, add this to your `vars.yml` file: For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_slack_enabled: true matrix_mautrix_slack_enabled: true
@ -28,11 +32,6 @@ matrix_mautrix_slack_enabled: true
You may optionally wish to add some [Additional configuration](#additional-configuration), or to [prepare for double-puppeting](#set-up-double-puppeting) before the initial installation. You may optionally wish to add some [Additional configuration](#additional-configuration), or to [prepare for double-puppeting](#set-up-double-puppeting) before the initial installation.
After adjusting your `vars.yml` file, re-run the playbook and restart all services: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`
To make use of the bridge, see [Usage](#usage) below.
### Additional configuration ### Additional configuration
There are some additional options you may wish to configure with the bridge. There are some additional options you may wish to configure with the bridge.
@ -42,21 +41,45 @@ Take a look at:
- `roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml` for some variables that you can customize via your `vars.yml` file - `roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml` for some variables that you can customize via your `vars.yml` file
- `roles/custom/matrix-bridge-mautrix-slack/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_mautrix_slack_configuration_extension_yaml` variable - `roles/custom/matrix-bridge-mautrix-slack/templates/config.yaml.j2` for the bridge's default configuration. You can override settings (even those that don't have dedicated playbook variables) using the `matrix_mautrix_slack_configuration_extension_yaml` variable
## Installing
### Set up Double Puppeting After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
1. Start a chat with `@slackbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
2. If you would like to login to Slack using a token, send the `login-token` command, otherwise, send the `login-password` command. Read [here](https://docs.mau.fi/bridges/go/slack/authentication.html) on how to retrieve your token and cookie token.
3. The bot should respond with "Successfully logged into <email> for team <workspace>"
4. Now that you're logged in, you can send a `help` command to the bot again, to see additional commands you have access to.
5. Slack channels should automatically begin bridging if you authenticated using a token. Otherwise, you must wait to receive a message in the channel if you used password authentication.
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet #### Method 1: automatically, by enabling Appservice Double Puppet
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook. The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service is configured and enabled on the server for this playbook.
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
#### Method 2: manually, by asking each user to provide a working access token #### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)).
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md). - retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
@ -64,12 +87,3 @@ When using this method, **each user** that wishes to enable Double Puppeting nee
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE` - send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-Slack` device some time in the future, as that would break the Double Puppeting feature - make sure you don't log out the `Mautrix-Slack` device some time in the future, as that would break the Double Puppeting feature
## Usage
1. Start a chat with `@slackbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).
2. If you would like to login to Slack using a token, send the `login-token` command, otherwise, send the `login-password` command. Read [here](https://docs.mau.fi/bridges/go/slack/authentication.html) on how to retrieve your token and cookie token.
3. The bot should respond with "Successfully logged into <email> for team <workspace>"
4. Now that you're logged in, you can send a `help` command to the bot again, to see additional commands you have access to.
5. Slack channels should automatically begin bridging if you authenticated using a token. Otherwise, you must wait to receive a message in the channel if you used password authentication.

View File

@ -1,10 +1,18 @@
# Setting up Mautrix Telegram (optional) # Setting up Mautrix Telegram bridging (optional)
The playbook can install and configure [mautrix-telegram](https://github.com/mautrix/telegram) for you. The playbook can install and configure [mautrix-telegram](https://github.com/mautrix/telegram) for you.
See the project's [documentation](https://docs.mau.fi/bridges/python/telegram/index.html) to learn what it does and why it might be useful to you. See the project's [documentation](https://docs.mau.fi/bridges/python/telegram/index.html) to learn what it does and why it might be useful to you.
You'll need to obtain API keys from [https://my.telegram.org/apps](https://my.telegram.org/apps) and then use the following playbook configuration: ## Prerequisite (optional)
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
You'll need to obtain API keys from [https://my.telegram.org/apps](https://my.telegram.org/apps) and then add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_telegram_enabled: true matrix_mautrix_telegram_enabled: true
@ -12,36 +20,28 @@ matrix_mautrix_telegram_api_id: YOUR_TELEGRAM_APP_ID
matrix_mautrix_telegram_api_hash: YOUR_TELEGRAM_API_HASH matrix_mautrix_telegram_api_hash: YOUR_TELEGRAM_API_HASH
``` ```
## Set up Double Puppeting ## Installing
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. **Notes**:
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future. - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging.
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
- send `login-matrix` to the bot and follow instructions about how to send the access token to it
- make sure you don't log out the `Mautrix-Telegram` device some time in the future, as that would break the Double Puppeting feature
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
You then need to start a chat with `@telegrambot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). You then need to start a chat with `@telegrambot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
If you want to use the relay-bot feature ([relay bot documentation](https://docs.mau.fi/bridges/python/telegram/relay-bot.html)), which allows anonymous user to chat with telegram users, use the following additional playbook configuration: If you want to use the relay-bot feature ([relay bot documentation](https://docs.mau.fi/bridges/python/telegram/relay-bot.html)), which allows anonymous user to chat with telegram users, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_telegram_bot_token: YOUR_TELEGRAM_BOT_TOKEN matrix_mautrix_telegram_bot_token: YOUR_TELEGRAM_BOT_TOKEN
@ -52,17 +52,44 @@ matrix_mautrix_telegram_configuration_extension_yaml: |
``` ```
You might also want to give permissions to administrate the bot: You might also want to give permissions to administrate the bot:
```yaml ```yaml
matrix_mautrix_telegram_configuration_extension_yaml: | matrix_mautrix_telegram_configuration_extension_yaml: |
bridge: bridge:
permissions: permissions:
'@user:DOMAIN': admin '@user:example.com': admin
``` ```
More details about permissions in this example: More details about permissions in this example: https://github.com/mautrix/telegram/blob/master/mautrix_telegram/example-config.yaml#L410
https://github.com/mautrix/telegram/blob/master/mautrix_telegram/example-config.yaml#L410
If you like to exclude all groups from syncing and use the Telgeram-Bridge only for direct chats, you can add the following additional playbook configuration: If you like to exclude all groups from syncing and use the Telgeram-Bridge only for direct chats, you can add the following additional playbook configuration:
```yaml ```yaml
matrix_mautrix_telegram_filter_mode: whitelist matrix_mautrix_telegram_filter_mode: whitelist
``` ```
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future.
#### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging.
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md).
- send `login-matrix` to the bot and follow instructions about how to send the access token to it
- make sure you don't log out the `Mautrix-Telegram` device some time in the future, as that would break the Double Puppeting feature

View File

@ -1,4 +1,4 @@
# Setting up Mautrix Twitter (optional) # Setting up Mautrix Twitter bridging (optional)
**Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) bridge supported by the playbook. **Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) bridge supported by the playbook.
@ -6,32 +6,58 @@ The playbook can install and configure [mautrix-twitter](https://github.com/maut
See the project's [documentation](https://github.com/mautrix/twitter) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/mautrix/twitter) to learn what it does and why it might be useful to you.
## Prerequisite (optional)
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_twitter_enabled: true matrix_mautrix_twitter_enabled: true
``` ```
## Installing
## Set up Double Puppeting After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth **Notes**:
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
1. You then need to start a chat with `@twitterbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
2. Send login-cookie to start the login. The bot should respond with instructions on how to proceed.
You can learn more here about authentication from the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/twitter/authentication.html).
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future. Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future.
### Method 2: manually, by asking each user to provide a working access token #### Method 2: manually, by asking each user to provide a working access token
This method is currently not available for the Mautrix-Twitter bridge, but is on the [roadmap](https://github.com/mautrix/twitter/blob/master/ROADMAP.md) under Misc/Manual login with `login-matrix` This method is currently not available for the Mautrix-Twitter bridge, but is on the [roadmap](https://github.com/mautrix/twitter/blob/master/ROADMAP.md) under Misc/Manual login with `login-matrix`
## Usage
1. You then need to start a chat with `@twitterbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).
2. Send login-cookie to start the login. The bot should respond with instructions on how to proceed.
You can learn more here about authentication from the bridge's [official documentation on Authentication](https://docs.mau.fi/bridges/python/twitter/authentication.html).
After successfully enabling bridging, you may wish to [set up Double Puppeting](#set-up-double-puppeting), if you haven't already done so.

View File

@ -1,44 +1,75 @@
# Setting up Mautrix Whatsapp (optional) # Setting up Mautrix Whatsapp bridging (optional)
The playbook can install and configure [mautrix-whatsapp](https://github.com/mautrix/whatsapp) for you. The playbook can install and configure [mautrix-whatsapp](https://github.com/mautrix/whatsapp) for you.
See the project's [documentation](https://docs.mau.fi/bridges/go/whatsapp/index.html) to learn what it does and why it might be useful to you. See the project's [documentation](https://docs.mau.fi/bridges/go/whatsapp/index.html) to learn what it does and why it might be useful to you.
Use the following playbook configuration: ## Prerequisite (optional)
If you want to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do) for this bridge automatically, you need to have enabled [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook.
For details about configuring Double Puppeting for this bridge, see the section below: [Set up Double Puppeting](#-set-up-double-puppeting)
## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mautrix_whatsapp_enabled: true matrix_mautrix_whatsapp_enabled: true
``` ```
Whatsapp multidevice beta is required, now it is enough if Whatsapp is connected to the Internet every 2 weeks. Whatsapp multidevice beta is required, now it is enough if Whatsapp is connected to the Internet every 2 weeks.
The relay bot functionality is off by default. If you would like to enable the relay bot, add the following to your `vars.yml` file: The relay bot functionality is off by default. If you would like to enable the relay bot, add the following to your `vars.yml` file:
```yaml ```yaml
matrix_mautrix_whatsapp_bridge_relay_enabled: true matrix_mautrix_whatsapp_bridge_relay_enabled: true
``` ```
By default, only admins are allowed to set themselves as relay users. To allow anyone on your homeserver to set themselves as relay users add this to your `vars.yml` file: By default, only admins are allowed to set themselves as relay users. To allow anyone on your homeserver to set themselves as relay users add this to your `vars.yml` file:
```yaml ```yaml
matrix_mautrix_whatsapp_bridge_relay_admin_only: false matrix_mautrix_whatsapp_bridge_relay_admin_only: false
``` ```
If you want to activate the relay bot in a room, use `!wa set-relay`. If you want to activate the relay bot in a room, send `!wa set-relay`. To deactivate, send `!wa unset-relay`.
Use `!wa unset-relay` to deactivate.
## Set up Double Puppeting ## Installing
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
The bridge will automatically perform Double Puppeting if you enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service or the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service for this playbook. **Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage
You then need to start a chat with `@whatsappbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
### 💡 Set up Double Puppeting
After successfully enabling bridging, you may wish to set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do).
To set it up, you have 2 ways of going about it.
#### Method 1: automatically, by enabling Appservice Double Puppet or Shared Secret Auth
The bridge automatically performs Double Puppeting if [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) or [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service is configured and enabled on the server for this playbook.
Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. Enabling [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future.
Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future. Enabling double puppeting by enabling the [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) service works at the time of writing, but is deprecated and will stop working in the future.
### Method 2: manually, by asking each user to provide a working access token #### Method 2: manually, by asking each user to provide a working access token
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)).
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps:
@ -47,8 +78,3 @@ When using this method, **each user** that wishes to enable Double Puppeting nee
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE` - send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE`
- make sure you don't log out the `Mautrix-Whatsapp` device some time in the future, as that would break the Double Puppeting feature - make sure you don't log out the `Mautrix-Whatsapp` device some time in the future, as that would break the Double Puppeting feature
## Usage
You then need to start a chat with `@whatsappbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain).

View File

@ -1,19 +1,12 @@
# Setting up Mautrix wsproxy (optional) # Setting up Mautrix wsproxy for bridging Android SMS or Apple iMessage (optional)
The playbook can install and configure [mautrix-wsproxy](https://github.com/mautrix/wsproxy) for you. The playbook can install and configure [mautrix-wsproxy](https://github.com/mautrix/wsproxy) for you.
See the project's [documentation](https://github.com/mautrix/wsproxy#readme) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/mautrix/wsproxy#readme) to learn what it does and why it might be useful to you.
## Adjusting the playbook configuration
## DNS To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
You need to create a `wsproxy.DOMAIN` DNS record pointing to your Matrix server (a `CNAME` pointing to `matrix.DOMAIN`) to use wsproxy.
The hostname is configurable via a `matrix_mautrix_wsproxy_hostname` variable.
## Configuration
Use the following playbook configuration:
```yaml ```yaml
matrix_mautrix_wsproxy_enabled: true matrix_mautrix_wsproxy_enabled: true
@ -27,6 +20,41 @@ matrix_mautrix_wsproxy_syncproxy_shared_secret: 'secret token from bridge'
Note that the tokens must match what is compiled into the [mautrix-imessage](https://github.com/mautrix/imessage) bridge running on your Mac or Android device. Note that the tokens must match what is compiled into the [mautrix-imessage](https://github.com/mautrix/imessage) bridge running on your Mac or Android device.
### Adjusting the wsproxy URL
By default, this playbook installs wsproxy on the `wsproxy.` subdomain (`wsproxy.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `matrix_mautrix_wsproxy_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname
matrix_mautrix_wsproxy_hostname: ws.example.com
```
## Adjusting DNS records
Once you've decided on the domain, **you may need to adjust your DNS** records to point the wsproxy domain to the Matrix server.
By default, you will need to create a CNAME record for `wsproxy`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
## 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,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage

View File

@ -1,38 +1,46 @@
# Setting up MX Puppet Discord (optional) # Setting up MX Puppet Discord bridging (optional)
**Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md)and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook. **Note**: bridging to [Discord](https://discordapp.com/) can also happen via the [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md)and [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridges supported by the playbook.
- For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing. - For using as a Bot we recommend the [Appservice Discord](configuring-playbook-bridge-appservice-discord.md), because it supports plumbing.
- For personal use with a discord account we recommend the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge, because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook. - For personal use with a discord account we recommend the [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge, because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook.
The playbook can install and configure The playbook can install and configure [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for you.
[mx-puppet-discord](https://github.com/matrix-discord/mx-puppet-discord) for you.
See the project page to learn what it does and why it might be useful to you. See the project page to learn what it does and why it might be useful to you.
**Note**: we actually use the [Beeper](https://www.beeper.com/)-maintained [fork of mx-puppet-discord](https://gitlab.com/beeper/mx-puppet-monorepo), because `matrix-discord/mx-puppet-discord` is a low-quality and poorly maintained project. ## Adjusting the playbook configuration
To enable the [Discord](https://discordapp.com/) bridge just use the following
playbook configuration:
To enable the [Discord](https://discordapp.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mx_puppet_discord_enabled: true matrix_mx_puppet_discord_enabled: true
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled you need to start a chat with `Discord Puppet Bridge` with Once the bot is enabled you need to start a chat with `Discord Puppet Bridge` with the handle `@_discordpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
the handle `@_discordpuppet_bot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base
domain, not the `matrix.` domain).
Three authentication methods are available, Legacy Token, OAuth and xoxc token. Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-discord [documentation](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for more information about how to configure the bridge.
See mx-puppet-discord [documentation](https://github.com/matrix-discord/mx-puppet-discord)
for more information about how to configure the bridge.
Once logged in, send `list` to the bot user to list the available rooms. Once logged in, send `list` to the bot user to list the available rooms.
Clicking rooms in the list will result in you receiving an invitation to the Clicking rooms in the list will result in you receiving an invitation to the bridged room.
bridged room.
Also send `help` to the bot to see the commands available. Also send `help` to the bot to see the commands available.

View File

@ -1,24 +1,37 @@
# Setting up MX Puppet GroupMe (optional) # Setting up MX Puppet GroupMe bridging (optional)
The playbook can install and configure The playbook can install and configure [mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) for you.
[mx-puppet-groupme](https://gitlab.com/xangelix-pub/matrix/mx-puppet-groupme) for you.
See the project page to learn what it does and why it might be useful to you. See the project page to learn what it does and why it might be useful to you.
To enable the [GroupMe](https://groupme.com/) bridge just use the following ## Adjusting the playbook configuration
playbook configuration:
To enable the [GroupMe](https://groupme.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mx_puppet_groupme_enabled: true matrix_mx_puppet_groupme_enabled: true
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled you need to start a chat with `GroupMe Puppet Bridge` with Once the bot is enabled you need to start a chat with `GroupMe Puppet Bridge` with the handle `@_groupmepuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
the handle `@_groupmepuppet_bot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base
domain, not the `matrix.` domain).
One authentication method is available. One authentication method is available.
@ -30,7 +43,6 @@ link <access token>
Once logged in, send `listrooms` to the bot user to list the available rooms. Once logged in, send `listrooms` to the bot user to list the available rooms.
Clicking rooms in the list will result in you receiving an invitation to the Clicking rooms in the list will result in you receiving an invitation to the bridged room.
bridged room.
Also send `help` to the bot to see the commands available. Also send `help` to the bot to see the commands available.

View File

@ -1,24 +1,37 @@
# Setting up mx-puppet-instagram (optional) # Setting up MX Puppet Instagram bridging (optional)
The playbook can install and configure The playbook can install and configure [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) for you.
[mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) for you.
This allows you to bridge Instagram DirectMessages into Matrix. This allows you to bridge Instagram DirectMessages into Matrix.
To enable the [Instagram](https://www.instagram.com/) bridge just use the following ## Adjusting the playbook configuration
playbook configuration:
To enable the [Instagram](https://www.instagram.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mx_puppet_instagram_enabled: true matrix_mx_puppet_instagram_enabled: true
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled, you need to start a chat with `Instagram Puppet Bridge` with Once the bot is enabled, you need to start a chat with `Instagram Puppet Bridge` with the handle `@_instagrampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
the handle `@_instagrampuppet_bot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base
domain, not the `matrix.` domain).
Send `link <username> <password>` to the bridge bot to link your instagram account. Send `link <username> <password>` to the bridge bot to link your instagram account.
@ -33,4 +46,3 @@ For double-puppeting, you probably want to issue these commands:
If you are linking only one Instagram account, your `$puppetId` is probably 1, but use the `list` command find out. If you are linking only one Instagram account, your `$puppetId` is probably 1, but use the `list` command find out.
The `help` command shows which commands are available, though at the time of writing, not every command is fully implemented. The `help` command shows which commands are available, though at the time of writing, not every command is fully implemented.

View File

@ -1,5 +1,5 @@
# Setting up MX Puppet Skype (optional) # Setting up MX Puppet Skype bridging (optional, removed)
The playbook used to be able to install and configure [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype), but no longer includes this component, because it has been broken and unmaintaned for a long time. The playbook used to be able to install and configure [mx-puppet-skype](https://github.com/Sorunome/mx-puppet-skype), but no longer includes this component, because it has been broken and unmaintained for a long time.
Bridging to [Skype](https://www.skype.com/) can also happen via the [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) bridge supported by the playbook. Bridging to [Skype](https://www.skype.com/) can also happen via the [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) bridge supported by the playbook.

View File

@ -1,46 +1,51 @@
# Setting up MX Puppet Slack (optional) # Setting up MX Puppet Slack bridging (optional)
**Note**: bridging to [Slack](https://slack.com) can also happen via the **Note**: bridging to [Slack](https://slack.com) can also happen via the [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook. Note that `matrix-appservice-slack` is not available for new installation unless you have already created a classic Slack application, because the creation of classic Slack applications, which this bridge makes use of, has been discontinued.
[matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) and [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridges supported by the playbook.
The playbook can install and configure [Beeper](https://www.beeper.com/)-maintained fork of The playbook can install and configure [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for you.
[mx-puppet-slack](https://gitlab.com/beeper/mx-puppet-monorepo) for you.
See the project page to learn what it does and why it might be useful to you. See the project page to learn what it does and why it might be useful to you.
## Setup ## Prerequisite
To enable the [Slack](https://slack.com/) bridge: Follow the [OAuth credentials](https://gitlab.com/mx-puppet/slack/mx-puppet-slack#option-2-oauth) instructions to create a new Slack app, setting the redirect URL to `https://matrix.example.com/slack/oauth`.
1. Follow the ## Adjusting the playbook configuration
[OAuth credentials](https://github.com/Sorunome/mx-puppet-slack#option-2-oauth)
instructions to create a new Slack app, setting the redirect URL to To enable the [Slack](https://slack.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
`https://matrix.YOUR_DOMAIN/slack/oauth`.
2. Update your `vars.yml` with the following: ```yaml
```yaml matrix_mx_puppet_slack_enabled: true
matrix_mx_puppet_slack_enabled: true # Client ID must be quoted so YAML does not parse it as a float.
# Client ID must be quoted so YAML does not parse it as a float. matrix_mx_puppet_slack_oauth_client_id: "<SLACK_APP_CLIENT_ID>"
matrix_mx_puppet_slack_oauth_client_id: "<SLACK_APP_CLIENT_ID>" matrix_mx_puppet_slack_oauth_client_secret: "<SLACK_APP_CLIENT_SECRET>"
matrix_mx_puppet_slack_oauth_client_secret: "<SLACK_APP_CLIENT_SECRET>" ```
```
3. Run playbooks with `setup-all` and `start` tags: ## Installing
```
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
```
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled you need to start a chat with `Slack Puppet Bridge` with Once the bot is enabled you need to start a chat with `Slack Puppet Bridge` with the handle `@_slackpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
the handle `@_slackpuppet_bot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base
domain, not the `matrix.` domain).
Three authentication methods are available, Legacy Token, OAuth and xoxc token. Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-slack [documentation](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for more information about how to configure the bridge.
See mx-puppet-slack [documentation](https://github.com/Sorunome/mx-puppet-slack)
for more information about how to configure the bridge.
Once logged in, send `list` to the bot user to list the available rooms. Once logged in, send `list` to the bot user to list the available rooms.
Clicking rooms in the list will result in you receiving an invitation to the Clicking rooms in the list will result in you receiving an invitation to the bridged room.
bridged room.
Also send `help` to the bot to see the commands available. Also send `help` to the bot to see the commands available.

View File

@ -1,32 +1,42 @@
# Setting up MX Puppet Steam (optional) # Setting up MX Puppet Steam bridging (optional)
The playbook can install and configure The playbook can install and configure [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) for you.
[mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) for you.
See the project page to learn what it does and why it might be useful to you. See the project page to learn what it does and why it might be useful to you.
To enable the [Steam](https://steampowered.com/) bridge just use the following ## Adjusting the playbook configuration
playbook configuration:
To enable the [Steam](https://steampowered.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mx_puppet_steam_enabled: true matrix_mx_puppet_steam_enabled: true
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled you need to start a chat with `Steam Puppet Bridge` with Once the bot is enabled you need to start a chat with `Steam Puppet Bridge` with the handle `@_steampuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
the handle `@_steampuppet_bot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base
domain, not the `matrix.` domain).
Three authentication methods are available, Legacy Token, OAuth and xoxc token. Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-steam [documentation](https://github.com/icewind1991/mx-puppet-steam) for more information about how to configure the bridge.
See mx-puppet-steam [documentation](https://github.com/icewind1991/mx-puppet-steam)
for more information about how to configure the bridge.
Once logged in, send `list` to the bot user to list the available rooms. Once logged in, send `list` to the bot user to list the available rooms.
Clicking rooms in the list will result in you receiving an invitation to the Clicking rooms in the list will result in you receiving an invitation to the bridged room.
bridged room.
Also send `help` to the bot to see the commands available. Also send `help` to the bot to see the commands available.

View File

@ -1,14 +1,18 @@
# Setting up MX Puppet Twitter (optional) # Setting up MX Puppet Twitter bridging (optional)
**Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mautrix-twitter](configuring-playbook-bridge-mautrix-twitter.md) bridge supported by the playbook. **Note**: bridging to [Twitter](https://twitter.com/) can also happen via the [mautrix-twitter](configuring-playbook-bridge-mautrix-twitter.md) bridge supported by the playbook.
The playbook can install and configure The playbook can install and configure [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) for you.
[mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) for you.
See the project page to learn what it does and why it might be useful to you. See the project page to learn what it does and why it might be useful to you.
To enable the [Twitter](https://twitter.com) bridge, make an app on [developer.twitter.com](https://developer.twitter.com/en/apps) ## Prerequisite
and fill out the following playbook configuration.
Make an app on [developer.twitter.com](https://developer.twitter.com/en/apps).
## Adjusting the playbook configuration
To enable the [Twitter](https://twitter.com) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_mx_puppet_twitter_enabled: true matrix_mx_puppet_twitter_enabled: true
@ -19,18 +23,31 @@ matrix_mx_puppet_twitter_access_token_secret: ''
matrix_mx_puppet_twitter_environment: '' matrix_mx_puppet_twitter_environment: ''
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bot is enabled you need to start a chat with `Twitter Puppet Bridge` with Once the bot is enabled you need to start a chat with `Twitter Puppet Bridge` with the handle `@_twitterpuppet_bot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
the handle `@_twitterpuppet_bot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base
domain, not the `matrix.` domain).
To log in, use `link` and click the link. To log in, use `link` and click the link.
Once logged in, send `list` to the bot user to list the available rooms. Once logged in, send `list` to the bot user to list the available rooms.
Clicking rooms in the list will result in you receiving an invitation to the Clicking rooms in the list will result in you receiving an invitation to the bridged room.
bridged room.
Also send `help` to the bot to see the commands available. Also send `help` to the bot to see the commands available.

View File

@ -0,0 +1,86 @@
# Setting up Postmoogle email bridging (optional)
**Note**: email bridging can also happen via the [email2matrix](configuring-playbook-email2matrix.md) bridge supported by the playbook.
The playbook can install and configure [Postmoogle](https://github.com/etkecc/postmoogle) for you.
Postmoogle is a bridge you can use to have its bot user forward emails to Matrix rooms. It runs an SMTP email server and allows you to assign mailbox addresses to the rooms.
See the project's [documentation](https://github.com/etkecc/postmoogle) to learn what it does and why it might be useful to you.
## Prerequisites
Open the following ports on your server to be able to receive incoming emails:
- `25/tcp`: SMTP
- `587/tcp`: Submission (TLS-encrypted SMTP)
If you don't open these ports, you will still be able to send emails, but not receive any.
These port numbers are configurable via the `matrix_postmoogle_smtp_host_bind_port` and `matrix_postmoogle_submission_host_bind_port` variables, but other email servers will try to deliver on these default (standard) ports, so changing them is of little use.
## Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_postmoogle_enabled: true
# Uncomment and adjust this part if you'd like to use a username different than the default
# matrix_postmoogle_login: postmoogle
# Generate a strong password here. Consider generating it with `pwgen -s 64 1`
matrix_postmoogle_password: PASSWORD_FOR_THE_BOT
# Uncomment to add one or more admins to this bridge:
#
# matrix_postmoogle_admins:
# - '@yourAdminAccount:{{ matrix_domain }}'
#
# .. unless you've made yourself an admin of all bots/bridges like this:
#
# matrix_admin: '@yourAdminAccount:{{ matrix_domain }}'
```
## Adjusting DNS records
You will also need to add several DNS records so that Postmoogle can send emails. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create a user account of the bridge's bot.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the bridge's bot password (`matrix_postmoogle_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_postmoogle_password` to let the bot know its new password.
## Usage
To use the bridge, invite the `@postmoogle:example.com` bot user into a room you want to use as a mailbox.
Then send `!pm mailbox NAME` to expose this Matrix room as an inbox with the email address `NAME@matrix.example.com`. Emails sent to that email address will be forwarded to the room.
Send `!pm help` to the room to see the bridge's help menu for additional commands.
You can also refer to the upstream [documentation](https://github.com/etkecc/postmoogle).
### Debug/Logs
As with all other services, you can find their logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by running something like `journalctl -fu matrix-postmoogle`
The default logging level for this bridge is `INFO`, but you can increase it to `DEBUG` with the following additional configuration:
```yaml
matrix_postmoogle_loglevel: 'DEBUG'
```

View File

@ -1,17 +1,36 @@
# Setting up the WeChat Bridge (optional) # Setting up WeChat bridging (optional)
The playbook can install and configure the [matrix-wechat](https://github.com/duo/matrix-wechat) bridge for you (for bridging to the [WeChat](https://www.wechat.com/) network). The playbook can install and configure the [matrix-wechat](https://github.com/duo/matrix-wechat) bridge for you (for bridging to the [WeChat](https://www.wechat.com/) network).
See the project page to learn what it does and why it might be useful to you. See the project page to learn what it does and why it might be useful to you.
To enable the bridge, use the following playbook configuration and re-run the playbook's [installation](./installing.md) procedure: ## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_wechat_enabled: true matrix_wechat_enabled: true
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Once the bridge is installed, start a chat with `@wechatbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). Once the bridge is installed, start a chat with `@wechatbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `help` to the bot to see the available commands. Send `help` to the bot to see the available commands.

View File

@ -4,8 +4,7 @@ The playbook can install and configure the [Cactus Comments](https://cactus.chat
Cactus Comments is a **federated comment system** built on Matrix. It respects your privacy, and puts you in control. Cactus Comments is a **federated comment system** built on Matrix. It respects your privacy, and puts you in control.
See the project's [documentation](https://cactus.chat/docs/getting-started/introduction/) to learn what it See the project's [documentation](https://cactus.chat/docs/getting-started/introduction/) to learn what it does and why it might be useful to you.
does and why it might be useful to you.
The playbook contains 2 roles for configuring different pieces of the Cactus Comments system: The playbook contains 2 roles for configuring different pieces of the Cactus Comments system:
@ -17,11 +16,11 @@ You can enable whichever component you need (typically both).
## Configuration ## Configuration
Add the following block to your `vars.yaml` and make sure to exchange the tokens to randomly generated values. To enable Cactus Comments, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
################# #################
## Cactus Chat ## ## Cactus Comments ##
################# #################
# This enables the backend (appservice) # This enables the backend (appservice)
@ -33,45 +32,95 @@ matrix_cactus_comments_enabled: true
# matrix_synapse_allow_guest_access: true # matrix_synapse_allow_guest_access: true
# matrix_dendrite_allow_guest_access: true # matrix_dendrite_allow_guest_access: true
# This enables client assets static files serving on `https://matrix.DOMAIN/cactus-comments`. # This enables client assets static files serving on `https://matrix.example.com/cactus-comments`.
# When the backend (appservice) is enabled, this is also enabled automatically, # When the backend (appservice) is enabled, this is also enabled automatically,
# but we explicitly enable it here. # but we explicitly enable it here.
matrix_cactus_comments_client_enabled: true matrix_cactus_comments_client_enabled: true
# Uncomment and adjust if you'd like to host the client assets at a different location.
# These variables are only make used if (`matrix_cactus_comments_client_enabled: true`)
# matrix_cactus_comments_client_hostname: "{{ matrix_server_fqn_matrix }}"
# matrix_cactus_comments_client_path_prefix: /cactus-comments
``` ```
### Adjusting the Cactus Comments' client URL
By default, this playbook installs Cactus Comments' client on the `matrix.` subdomain, at the `/cactus-comments` path (https://matrix.example.com/cactus-comments). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
By tweaking the `matrix_cactus_comments_client_hostname` and `matrix_cactus_comments_client_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname and path prefix to host the client assets at a different location
# These variables are used only if (`matrix_cactus_comments_client_enabled: true`)
matrix_cactus_comments_client_hostname: cactus.example.com
matrix_cactus_comments_client_path_prefix: /
```
## Adjusting DNS records
If you've changed the default hostname, **you may need to adjust your DNS** records to point the Cactus Comments' client domain to the Matrix server.
See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to use the default hostname, you won't need to do any extra DNS configuration.
## Installing ## Installing
After configuring the playbook, run the [installation](installing.md) command again. 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,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Usage ## Usage
Upon starting Cactus Comments, a `bot.cactusbot` user account is created automatically. Upon starting Cactus Comments, a `bot.cactusbot` user account is created automatically.
To get started, send a `help` message to the `@bot.cactusbot:your-homeserver.com` bot to confirm it's working. To get started, send a `help` message to the `@bot.cactusbot:example.com` bot to confirm it's working.
Then, register a site by typing: `register <sitename>`. You will then be invited into a moderation room.
Now you are good to go and can include the comment section on your website!
**Careful:** To really make use of self-hosting you need change a few things in comparison to the official docs! Then, register a site by sending `register <YourSiteName>` (where `<YourSiteName>` is a unique identifier you choose. It does not have to match your domain). You will then be invited into a moderation room.
Insert the following snippet into you page and make sure to replace `example.com` with your base domain! Now you are good to go and can embed the comment section on your website!
## Embed Cactus Comments
The official [documentation](https://cactus.chat/docs/getting-started/quick-start/) provides a useful guide to embed Cactus Comments on your website.
After including the JavaScript and CSS asset files, insert a `<div>` where you'd like to display the comment section:
````html
<div id="comment-section"></div>
````
Then, you need to initialize the comment section. Make sure to replace `example.com` with your base domain and `<YourSiteName>` with the one that has been registered above:
```html ```html
<script type="text/javascript" src="https://matrix.example.com/cactus-comments/cactus.js"></script>
<link rel="stylesheet" href="https://matrix.example.com/cactus-comments/style.css" type="text/css">
<div id="comment-section"></div>
<script> <script>
initComments({ initComments({
node: document.getElementById("comment-section"), node: document.getElementById("comment-section"),
defaultHomeserverUrl: "https://matrix.example.com:8448", defaultHomeserverUrl: "https://matrix.example.com:8448",
serverName: "example.com", serverName: "example.com",
siteName: "YourSiteName", siteName: "<YourSiteName>",
commentSectionId: "1" commentSectionId: "1"
}) })
</script> </script>
``` ```
### Adjust the domain name for self-hosting
To have the assets served from your homeserver (not from `cactus.chat`), you need to adjust the domain name on the official documentation.
Make sure to replace `example.com` with your base domain before you include the following lines, instead of the one provided by the official documentation:
```html
<script type="text/javascript" src="https://matrix.example.com/cactus-comments/cactus.js"></script>
<link rel="stylesheet" href="https://matrix.example.com/cactus-comments/style.css" type="text/css">
```
**Note**: if the `matrix_cactus_comments_client_hostname` and `matrix_cactus_comments_client_path_prefix` variables are tweaked, you would need to adjust the URLs of the assets accordingly.

View File

@ -1,21 +1,53 @@
# Configuring Cinny (optional) # Setting up Cinny (optional)
This playbook can install the [cinny](https://github.com/ajbura/cinny) Matrix web client for you. This playbook can install the [Cinny](https://github.com/ajbura/cinny) Matrix web client for you.
cinny is a web client focusing primarily on simple, elegant and secure interface.
cinny can be installed alongside or instead of Element.
If you'd like cinny to be installed, add the following to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): Cinny is a web client focusing primarily on simple, elegant and secure interface. It can be installed alongside or instead of [Element Web](./configuring-playbook-client-element-web.md).
💡 **Note**: the latest version of Cinny is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Applications, you can consider using it from there and avoiding the (small) overhead of self-hosting:
- [app.cinny.in](https://app.cinny.in), hosted by the [Cinny](https://cinny.in/) developers
## Adjusting the playbook configuration
To enable Cinny, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_client_cinny_enabled: true matrix_client_cinny_enabled: true
``` ```
You will also need to add a DNS record so that cinny can be accessed. ### Adjusting the Cinny URL
By default cinny will use https://cinny.DOMAIN so you will need to create an CNAME record
for `cinny`. See [Configuring DNS](configuring-dns.md).
If you would like to use a different domain, add the following to your configuration file (changing it to use your preferred domain): By default, this playbook installs Cinny on the `cinny.` subdomain (`cinny.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `matrix_client_cinny_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
While a `matrix_client_cinny_path_prefix` variable exists for tweaking the path-prefix, it's [not supported anymore](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3701), because Cinny requires an application rebuild (with a tweaked build config) to be functional under a custom path.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_server_fqn_cinny: "app.{{ matrix_domain }}" # Switch to a different domain (`app.example.com`) than the default one (`cinny.example.com`)
matrix_client_cinny_hostname: "app.{{ matrix_domain }}"
``` ```
## Adjusting DNS records
Once you've decided on the domain, **you may need to adjust your DNS** records to point the Cinny domain to the Matrix server.
By default, you will need to create a CNAME record for `cinny`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've adjusted `matrix_client_cinny_hostname`, you will need to adjust your DNS configuration accordingly.
## Installing
After configuring the playbook and [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.

View File

@ -0,0 +1,80 @@
# Configuring Element Web (optional)
By default, this playbook installs the [Element Web](https://github.com/element-hq/element-web) Matrix client for you. If that's okay, you can skip this document.
💡 **Note**: the latest version of Element Web is also available on the web, hosted by 3rd parties. If you trust giving your credentials to the following 3rd party Single Page Applications, you can consider using it from there and avoiding the (small) overhead of self-hosting (by [disabling Element Web](#disabling-element-web)):
- [app.element.io](https://app.element.io/), hosted by [Element](https://element.io/)
- [app.etke.cc](https://app.etke.cc/), hosted by [etke.cc](https://etke.cc/)
## Disabling Element Web
If you'd like for the playbook to not install Element Web (or to uninstall it if it was previously installed), add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_client_element_enabled: false
```
## Adjusting the playbook configuration
The playbook provides some customization variables you could use to change Element Web's settings.
Their defaults are defined in [`roles/custom/matrix-client-element/defaults/main.yml`](../roles/custom/matrix-client-element/defaults/main.yml) and they ultimately end up in the generated `/matrix/element/config.json` file (on the server). This file is generated from the [`roles/custom/matrix-client-element/templates/config.json.j2`](../roles/custom/matrix-client-element/templates/config.json.j2) template.
**If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) and [re-run the playbook](installing.md) to apply the changes.
Alternatively, **if there is no pre-defined variable** for an Element Web setting you wish to change:
- you can either **request a variable to be created** (or you can submit such a contribution yourself). Keep in mind that it's **probably not a good idea** to create variables for each one of Element Web's various settings that rarely get used.
- or, you can **extend and override the default configuration** ([`config.json.j2`](../roles/custom/matrix-client-element/templates/config.json.j2)) by making use of the `matrix_client_element_configuration_extension_json_` variable. You can find information about this in [`roles/custom/matrix-client-element/defaults/main.yml`](../roles/custom/matrix-client-element/defaults/main.yml).
- or, if extending the configuration is still not powerful enough for your needs, you can **override the configuration completely** using `matrix_client_element_configuration_default` (or `matrix_client_element_configuration`). You can find information about this in [`roles/custom/matrix-client-element/defaults/main.yml`](../roles/custom/matrix-client-element/defaults/main.yml).
### Themes
To change the look of Element Web, you can define your own themes manually by using the `matrix_client_element_setting_defaults_custom_themes` setting.
Or better yet, you can automatically pull it all themes provided by the [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes) project by simply flipping a flag (`matrix_client_element_themes_enabled: true`).
If you make your own theme, we encourage you to submit it to the **aaronraimist/element-themes** project, so that the whole community could easily enjoy it.
Note that for a custom theme to work well, all Element Web instances that you use must have the same theme installed.
### Adjusting the Element Web URL
By default, this playbook installs Element Web on the `element.` subdomain (`element.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `matrix_client_element_hostname` and `matrix_client_element_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for Element Web.
matrix_client_element_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /element subpath
matrix_client_element_path_prefix: /element
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Element Web domain to the Matrix server.
By default, you will need to create a CNAME record for `element`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.

View File

@ -1,41 +0,0 @@
# Configuring Element (optional)
By default, this playbook installs the [Element](https://github.com/element-hq/element-web) Matrix client web application.
If that's okay, you can skip this document.
## Disabling Element
If you'd like for the playbook to not install Element (or to uninstall it if it was previously installed), you can disable it in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`):
```yaml
matrix_client_element_enabled: false
```
## Configuring Element settings
The playbook provides some customization variables you could use to change Element's settings.
Their defaults are defined in [`roles/custom/matrix-client-element/defaults/main.yml`](../roles/custom/matrix-client-element/defaults/main.yml) and they ultimately end up in the generated `/matrix/element/config.json` file (on the server). This file is generated from the [`roles/custom/matrix-client-element/templates/config.json.j2`](../roles/custom/matrix-client-element/templates/config.json.j2) template.
**If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) and [re-run the playbook](installing.md) to apply the changes.
Alternatively, **if there is no pre-defined variable** for an Element setting you wish to change:
- you can either **request a variable to be created** (or you can submit such a contribution yourself). Keep in mind that it's **probably not a good idea** to create variables for each one of Element's various settings that rarely get used.
- or, you can **extend and override the default configuration** ([`config.json.j2`](../roles/custom/matrix-client-element/templates/config.json.j2)) by making use of the `matrix_client_element_configuration_extension_json_` variable. You can find information about this in [`roles/custom/matrix-client-element/defaults/main.yml`](../roles/custom/matrix-client-element/defaults/main.yml).
- or, if extending the configuration is still not powerful enough for your needs, you can **override the configuration completely** using `matrix_client_element_configuration_default` (or `matrix_client_element_configuration`). You can find information about this in [`roles/custom/matrix-client-element/defaults/main.yml`](../roles/custom/matrix-client-element/defaults/main.yml).
## Themes
To change the look of Element, you can define your own themes manually by using the `matrix_client_element_setting_defaults_custom_themes` setting.
Or better yet, you can automatically pull it all themes provided by the [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes) project by simply flipping a flag (`matrix_client_element_themes_enabled: true`).
If you make your own theme, we encourage you to submit it to the **aaronraimist/element-themes** project, so that the whole community could easily enjoy it.
Note that for a custom theme to work well, all Element instances that you use must have the same theme installed.

View File

@ -1,21 +1,51 @@
# Configuring Hydrogen (optional) # Setting up Hydrogen (optional)
This playbook can install the [Hydrogen](https://github.com/element-hq/hydrogen-web) Matrix web client for you. This playbook can install the [Hydrogen](https://github.com/element-hq/hydrogen-web) Matrix web client for you.
Hydrogen is a lightweight web client that supports mobile and legacy web browsers.
Hydrogen can be installed alongside or instead of Element.
If you'd like Hydrogen to be installed, add the following to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): Hydrogen is a lightweight web client that supports mobile and legacy web browsers. It can be installed alongside or instead of Element Web.
## Adjusting the playbook configuration
To enable Hydrogen, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_client_hydrogen_enabled: true matrix_client_hydrogen_enabled: true
``` ```
You will also need to add a DNS record so that Hydrogen can be accessed. ### Adjusting the Hydrogen URL
By default Hydrogen will use https://hydrogen.DOMAIN so you will need to create an CNAME record
for `hydrogen`. See [Configuring DNS](configuring-dns.md).
If you would like to use a different domain, add the following to your configuration file (changing it to use your preferred domain): By default, this playbook installs Hydrogen on the `hydrogen.` subdomain (`hydrogen.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `matrix_client_hydrogen_hostname` and `matrix_client_hydrogen_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_server_fqn_hydrogen: "helium.{{ matrix_domain }}" # Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for Hydrogen.
matrix_client_hydrogen_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /hydrogen subpath
matrix_client_hydrogen_path_prefix: /hydrogen
``` ```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Hydrogen domain to the Matrix server.
By default, you will need to create a CNAME record for `hydrogen`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.

View File

@ -0,0 +1,79 @@
# Setting up SchildiChat Web (optional)
This playbook can install the [SchildiChat Web](https://github.com/SchildiChat/schildichat-desktop) Matrix client for you.
SchildiChat Web is a feature-rich messenger for Matrix based on Element Web with some extras and tweaks. It can be installed alongside or instead of Element Web.
💡 **Note**: the latest version of SchildiChat 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:
- [app.schildi.chat](https://app.schildi.chat/), hosted by the [SchildiChat](https://schildi.chat/) developers
## Adjusting the playbook configuration
To enable SchildiChat Web, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_client_schildichat_enabled: true
```
The playbook provides some customization variables you could use to change SchildiChat Web's settings.
Their defaults are defined in [`roles/custom/matrix-client-schildichat/defaults/main.yml`](../roles/custom/matrix-client-schildichat/defaults/main.yml) and they ultimately end up in the generated `/matrix/schildichat/config.json` file (on the server). This file is generated from the [`roles/custom/matrix-client-schildichat/templates/config.json.j2`](../roles/custom/matrix-client-schildichat/templates/config.json.j2) template.
**If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) and [re-run the playbook](installing.md) to apply the changes.
Alternatively, **if there is no pre-defined variable** for a SchildiChat Web setting you wish to change:
- you can either **request a variable to be created** (or you can submit such a contribution yourself). Keep in mind that it's **probably not a good idea** to create variables for each one of SchildiChat Web's various settings that rarely get used.
- or, you can **extend and override the default configuration** ([`config.json.j2`](../roles/custom/matrix-client-schildichat/templates/config.json.j2)) by making use of the `matrix_client_schildichat_configuration_extension_json_` variable. You can find information about this in [`roles/custom/matrix-client-schildichat/defaults/main.yml`](../roles/custom/matrix-client-schildichat/defaults/main.yml).
- or, if extending the configuration is still not powerful enough for your needs, you can **override the configuration completely** using `matrix_client_schildichat_configuration_default` (or `matrix_client_schildichat_configuration`). You can find information about this in [`roles/custom/matrix-client-schildichat/defaults/main.yml`](../roles/custom/matrix-client-schildichat/defaults/main.yml).
### Themes
To change the look of SchildiChat Web, you can define your own themes manually by using the `matrix_client_schildichat_setting_defaults_custom_themes` setting.
Or better yet, you can automatically pull it all themes provided by the [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes) project by simply flipping a flag (`matrix_client_schildichat_themes_enabled: true`).
If you make your own theme, we encourage you to submit it to the **aaronraimist/element-themes** project, so that the whole community could easily enjoy it.
Note that for a custom theme to work well, all SchildiChat Web instances that you use must have the same theme installed.
### Adjusting the SchildiChat Web URL
By default, this playbook installs SchildiChat Web on the `schildichat.` subdomain (`schildichat.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `matrix_client_schildichat_hostname` and `matrix_client_schildichat_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for SchildiChat Web.
matrix_client_schildichat_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /schildichat subpath
matrix_client_schildichat_path_prefix: /schildichat
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the SchildiChat Web domain to the Matrix server.
By default, you will need to create a CNAME record for `schildichat`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.

View File

@ -1,42 +0,0 @@
# Configuring SchildiChat (optional)
By default, this playbook does not install the [SchildiChat](https://github.com/SchildiChat/schildichat-desktop) Matrix client web application.
**WARNING**: SchildiChat is based on Element-web, but its releases are lagging behind. As an example (from 2024-02-26), SchildiChat is 22 releases behind (it being based on element-web `v1.11.36`, while element-web is now on `v1.11.58`). Element-web frequently suffers from security issues, so running something based on an ancient Element-web release is **dangerous**. Use SchildiChat at your own risk!
## Enabling SchildiChat
If you'd like for the playbook to install SchildiChat, you can enable it in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`):
```yaml
matrix_client_schildichat_enabled: true
```
## Configuring SchildiChat settings
The playbook provides some customization variables you could use to change schildichat's settings.
Their defaults are defined in [`roles/custom/matrix-client-schildichat/defaults/main.yml`](../roles/custom/matrix-client-schildichat/defaults/main.yml) and they ultimately end up in the generated `/matrix/schildichat/config.json` file (on the server). This file is generated from the [`roles/custom/matrix-client-schildichat/templates/config.json.j2`](../roles/custom/matrix-client-schildichat/templates/config.json.j2) template.
**If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) and [re-run the playbook](installing.md) to apply the changes.
Alternatively, **if there is no pre-defined variable** for an schildichat setting you wish to change:
- you can either **request a variable to be created** (or you can submit such a contribution yourself). Keep in mind that it's **probably not a good idea** to create variables for each one of schildichat's various settings that rarely get used.
- or, you can **extend and override the default configuration** ([`config.json.j2`](../roles/custom/matrix-client-schildichat/templates/config.json.j2)) by making use of the `matrix_client_schildichat_configuration_extension_json_` variable. You can find information about this in [`roles/custom/matrix-client-schildichat/defaults/main.yml`](../roles/custom/matrix-client-schildichat/defaults/main.yml).
- or, if extending the configuration is still not powerful enough for your needs, you can **override the configuration completely** using `matrix_client_schildichat_configuration_default` (or `matrix_client_schildichat_configuration`). You can find information about this in [`roles/custom/matrix-client-schildichat/defaults/main.yml`](../roles/custom/matrix-client-schildichat/defaults/main.yml).
## Themes
To change the look of schildichat, you can define your own themes manually by using the `matrix_client_schildichat_setting_defaults_custom_themes` setting.
Or better yet, you can automatically pull it all themes provided by the [aaronraimist/element-themes](https://github.com/aaronraimist/element-themes) project by simply flipping a flag (`matrix_client_schildichat_themes_enabled: true`).
If you make your own theme, we encourage you to submit it to the **aaronraimist/element-themes** project, so that the whole community could easily enjoy it.
Note that for a custom theme to work well, all schildichat instances that you use must have the same theme installed.

View File

@ -2,41 +2,40 @@
By default, this playbook configures the [Synapse](https://github.com/element-hq/synapse) Matrix server, but you can also use [Conduit](https://conduit.rs). By default, this playbook configures the [Synapse](https://github.com/element-hq/synapse) Matrix server, but you can also use [Conduit](https://conduit.rs).
**NOTES**: **Notes**:
- **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Conduit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Conduit). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet.
- **homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding - **homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding
## Adjusting the playbook configuration
## Installation To use Conduit, you **generally** need to add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
To use Conduit, you **generally** need the following additional `vars.yml` configuration:
```yaml ```yaml
matrix_homeserver_implementation: conduit matrix_homeserver_implementation: conduit
``` ```
However, since Conduit is difficult (see [famedly/conduit#276](https://gitlab.com/famedly/conduit/-/issues/276) and [famedly/conduit#354](https://gitlab.com/famedly/conduit/-/merge_requests/354)) when it comes to creating the first user account and does not support [registering users](registering-users.md) (via the command line or via the playbook) like Synapse and Dendrite do, we recommend the following flow: ## Creating the first user account
Since it is difficult to create the first user account on Conduit (see [famedly/conduit#276](https://gitlab.com/famedly/conduit/-/issues/276) and [famedly/conduit#354](https://gitlab.com/famedly/conduit/-/merge_requests/354)) and it does not support [registering users](registering-users.md) (via the command line or via the playbook) like Synapse and Dendrite do, we recommend the following procedure:
1. Add `matrix_conduit_allow_registration: true` to your `vars.yml` the first time around, temporarily 1. Add `matrix_conduit_allow_registration: true` to your `vars.yml` the first time around, temporarily
2. Run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` - see [Installing](installing.md)) 2. Run the playbook (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` - see [Installing](installing.md))
3. Create your first user via Element or any other client which supports creating users 3. Create your first user via Element Web or any other client which supports creating users
4. Get rid of `matrix_conduit_allow_registration: true` from your `vars.yml` 4. Get rid of `matrix_conduit_allow_registration: true` from your `vars.yml`
5. Run the playbook again (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-conduit,start` would be enough this time) 5. Run the playbook again (`ansible-playbook -i inventory/hosts setup.yml --tags=setup-conduit,start` would be enough this time)
6. You can now use your server safely. Additional users can be created by messaging the internal Conduit bot 6. You can now use your server safely. Additional users can be created by messaging the internal Conduit bot
## Configuring bridges / appservices ## Configuring bridges / appservices
Automatic appservice setup is currently unsupported when using conduit. After setting up the service as usual you may notice that it is unable to start. Automatic appservice setup is currently unsupported when using Conduit. After setting up the service as usual you may notice that it is unable to start.
You will have to manually register appservices using the the [register-appservice](https://gitlab.com/famedly/conduit/-/blob/next/APPSERVICES.md) command. You will have to manually register appservices using the the [register-appservice](https://gitlab.com/famedly/conduit/-/blob/next/APPSERVICES.md) command.
Find the `registration.yaml` in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`, then pass the content to conduit: Find the `registration.yaml` in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`, then pass the content to Conduit:
@conduit:example.com: register-appservice
@conduit:your.server.name: register-appservice
``` ```
as_token: <token> as_token: <token>
de.sorunome.msc2409.push_ephemeral: true de.sorunome.msc2409.push_ephemeral: true

View File

@ -2,15 +2,25 @@
By default, this playbook configures the [Synapse](https://github.com/element-hq/synapse) Matrix server, but you can also use [Dendrite](https://github.com/matrix-org/dendrite). By default, this playbook configures the [Synapse](https://github.com/element-hq/synapse) Matrix server, but you can also use [Dendrite](https://github.com/matrix-org/dendrite).
**NOTES**: **Notes**:
- **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Dendrite). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> Dendrite). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet.
- **homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding - **homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding
The playbook provided settings for Dendrite are defined in [`roles/custom/matrix-dendrite/defaults/main.yml`](../roles/custom/matrix-dendrite/defaults/main.yml) and they ultimately end up in the generated `/matrix/dendrite/config/dendrite.yaml` file (on the server). This file is generated from the [`roles/custom/matrix-dendrite/templates/dendrite/dendrite.yaml.j2`](../roles/custom/matrix-dendrite/templates/dendrite/dendrite.yaml.j2) template. ## Adjusting the playbook configuration
**If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) and [re-run the playbook](installing.md) to apply the changes. To use Dendrite, you **generally** need to add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_homeserver_implementation: dendrite
```
The playbook provides lots of customization variables you could use to change Dendrite's settings.
Their defaults are defined in [`roles/custom/matrix-dendrite/defaults/main.yml`](../roles/custom/matrix-dendrite/defaults/main.yml) and they ultimately end up in the generated `/matrix/dendrite/config/dendrite.yaml` file (on the server). This file is generated from the [`roles/custom/matrix-dendrite/templates/dendrite/dendrite.yaml.j2`](../roles/custom/matrix-dendrite/templates/dendrite/dendrite.yaml.j2) template.
**If there's an existing variable** which controls a setting you wish to change, you can simply define that variable in your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) and [re-run the playbook](installing.md) to apply the changes.
Alternatively, **if there is no pre-defined variable** for a Dendrite setting you wish to change: Alternatively, **if there is no pre-defined variable** for a Dendrite setting you wish to change:
@ -20,13 +30,15 @@ Alternatively, **if there is no pre-defined variable** for a Dendrite setting yo
- or, if extending the configuration is still not powerful enough for your needs, you can **override the configuration completely** using `matrix_dendrite_configuration` (or `matrix_dendrite_configuration_yaml`). You can find information about this in [`roles/custom/matrix-dendrite/defaults/main.yml`](../roles/custom/matrix-dendrite/defaults/main.yml). - or, if extending the configuration is still not powerful enough for your needs, you can **override the configuration completely** using `matrix_dendrite_configuration` (or `matrix_dendrite_configuration_yaml`). You can find information about this in [`roles/custom/matrix-dendrite/defaults/main.yml`](../roles/custom/matrix-dendrite/defaults/main.yml).
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
## Installation <!-- 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
To use Dendrite, you **generally** need the following additional `vars.yml` configuration: ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```yaml
matrix_homeserver_implementation: dendrite
``` ```
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.

View File

@ -1,66 +1,40 @@
# Setting up Dimension (optional) # Setting up Dimension integration manager (optional, unmaintained)
**[Dimension](https://dimension.t2bot.io) can only be installed after Matrix services are installed and running.** **[Dimension](https://dimension.t2bot.io) can only be installed after Matrix services are installed and running.** If you're just installing Matrix services for the first time, please continue with the [Configuration](configuring-playbook.md) / [Installation](installing.md) flow and come back here later.
If you're just installing Matrix services for the first time, please continue with the [Configuration](configuring-playbook.md) / [Installation](installing.md) flow and come back here later.
**Note**: Dimension is **[officially unmaintained](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2806#issuecomment-1673559299)**. We recommend not bothering with installing it. **Note**: Dimension is **[officially unmaintained](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/2806#issuecomment-1673559299)**. We recommend not bothering with installing it.
**Note**: This playbook now supports running [Dimension](https://dimension.t2bot.io) in both a federated and [unfederated](https://github.com/turt2live/matrix-dimension/blob/master/docs/unfederated.md) environments. This is handled automatically based on the value of `matrix_homeserver_federation_enabled`. Enabling Dimension, means that the `openid` API endpoints will be exposed on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. It's something to be aware of, especially in terms of firewall whitelisting (make sure port `8448` is accessible). **Note**: This playbook now supports running [Dimension](https://dimension.t2bot.io) in both a federated and [unfederated](https://github.com/turt2live/matrix-dimension/blob/master/docs/unfederated.md) environments. This is handled automatically based on the value of `matrix_homeserver_federation_enabled`. Enabling Dimension, means that the `openid` API endpoints will be exposed on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. It's something to be aware of, especially in terms of firewall whitelisting (make sure port `8448` is accessible).
## Adjusting the playbook configuration
## Decide on a domain and path To enable Dimension, add this to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`):
By default, Dimension is configured to use its own dedicated domain (`dimension.DOMAIN`) and requires you to [adjust your DNS records](#adjusting-dns-records).
You can override the domain and path like this:
```yaml
# Switch to another hostname compared to the default (`dimension.{{ matrix_domain }}`)
matrix_dimension_hostname: "integrations.{{ matrix_domain }}"
```
While there is a `matrix_dimension_path_prefix` variable for changing the path where Dimension is served, overriding it is not possible right now due to [this Dimension issue](https://github.com/turt2live/matrix-dimension/issues/510). You must serve Dimension at a dedicated subdomain until this issue is solved.
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Dimension domain to the Matrix server.
## Enable
To enable Dimension, add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`):
```yaml ```yaml
matrix_dimension_enabled: true matrix_dimension_enabled: true
``` ```
### Define admin users
## Define admin users These users can modify the integrations this Dimension supports. Add this to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`):
These users can modify the integrations this Dimension supports.
Add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`):
```yaml ```yaml
matrix_dimension_admins: matrix_dimension_admins:
- "@user1:{{ matrix_domain }}" - "@alice:{{ matrix_domain }}"
- "@user2:{{ matrix_domain }}" - "@bob:{{ matrix_domain }}"
``` ```
The admin interface is accessible within Element by accessing it in any room and clicking the cog wheel/settings icon in the top right. Currently, Dimension can be opened in Element by the "Add widgets, bridges, & bots" link in the room information. The admin interface is accessible within Element Web by accessing it in any room and clicking the cog wheel/settings icon in the top right. Currently, Dimension can be opened in Element Web by the "Add widgets, bridges, & bots" link in the room information.
## Access token ### Access token
We recommend that you create a dedicated Matrix user for Dimension (`dimension` is a good username). We recommend that you create a dedicated Matrix user for Dimension (`dimension` is a good username). Follow our [Registering users](registering-users.md) guide to learn how to register **a regular (non-admin) user**.
Follow our [Registering users](registering-users.md) guide to learn how to register **a regular (non-admin) user**.
You are required to specify an access token (belonging to this new user) for Dimension to work. You are required to specify an access token (belonging to this new user) for Dimension to work. To get an access token for the Dimension user, you can follow the documentation on [how to do obtain an access token](obtaining-access-tokens.md).
To get an access token for the Dimension user, you can follow the documentation on [how to do obtain an access token](obtaining-access-tokens.md).
**Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone.** **Access tokens are sensitive information. Do not include them in any bug reports, messages, or logs. Do not share the access token with anyone.**
Add access token to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): Add access token to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`):
```yaml ```yaml
matrix_dimension_access_token: "YOUR ACCESS TOKEN HERE" matrix_dimension_access_token: "YOUR ACCESS TOKEN HERE"
@ -68,28 +42,56 @@ matrix_dimension_access_token: "YOUR ACCESS TOKEN HERE"
For more information on how to acquire an access token, visit [https://t2bot.io/docs/access_tokens](https://t2bot.io/docs/access_tokens). For more information on how to acquire an access token, visit [https://t2bot.io/docs/access_tokens](https://t2bot.io/docs/access_tokens).
### Adjusting the Dimension URL
## Installation By default, this playbook installs Dimension on the `dimension.` subdomain (`dimension.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
After these variables have been set and you have potentially [adjusted your DNS records](#adjusting-dns-records), please run the following command to re-run setup and to restart Dimension: By tweaking the `matrix_dimension_hostname` and `matrix_dimension_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for Dimension.
matrix_dimension_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /dimension subpath
# matrix_dimension_path_prefix: /dimension
``` ```
**Note**: While there is a `matrix_dimension_path_prefix` variable for changing the path where Dimension is served, overriding it is not possible due to [this Dimension issue](https://github.com/turt2live/matrix-dimension/issues/510). You must serve Dimension at a dedicated subdomain.
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Dimension domain to the Matrix server.
By default, you will need to create a CNAME record for `dimension`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
## 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 ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
``` ```
After Dimension has been installed you may need to log out and log back in for it to pick up the new integrations manager. Then you can access integrations in Element by opening a room, clicking the Room info button (`i`) button in the top right corner of the screen, and then clicking Add widgets, bridges & bots. **Notes**:
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
- After Dimension has been installed you may need to log out and log back in for it to pick up the new integration manager. Then you can access integrations in Element Web by opening a room, clicking the Room info button (`i`) button in the top right corner of the screen, and then clicking Add widgets, bridges & bots.
## Jitsi domain ## Jitsi domain
By default Dimension will use [jitsi.riot.im](https://jitsi.riot.im/) as the `conferenceDomain` of [Jitsi](https://jitsi.org/) audio/video conference widgets. For users running [a self-hosted Jitsi instance](./configuring-playbook-jitsi.md), you will likely want the widget to use your own Jitsi instance. Currently there is no way to configure this via the playbook, see [this issue](https://github.com/turt2live/matrix-dimension/issues/345) for details. By default Dimension will use [jitsi.riot.im](https://jitsi.riot.im/) as the `conferenceDomain` of [Jitsi](https://jitsi.org/) audio/video conference widgets. For users running [a self-hosted Jitsi instance](./configuring-playbook-jitsi.md), you will likely want the widget to use your own Jitsi instance. Currently there is no way to configure this via the playbook, see [this issue](https://github.com/turt2live/matrix-dimension/issues/345) for details.
In the interim until the above limitation is resolved, an admin user needs to configure the domain via the admin ui once dimension is running. In Element, go to *Manage Integrations* &rightarrow; *Settings* &rightarrow; *Widgets* &rightarrow; *Jitsi Conference Settings* and set *Jitsi Domain* and *Jitsi Script URL* appropriately. In the interim until the above limitation is resolved, an admin user needs to configure the domain via the admin ui once dimension is running. In Element Web, go to *Manage Integrations* &rightarrow; *Settings* &rightarrow; *Widgets* &rightarrow; *Jitsi Conference Settings* and set *Jitsi Domain* and *Jitsi Script URL* appropriately.
## Additional features ## Additional features
To use a more custom configuration, you can define a `matrix_dimension_configuration_extension_yaml` string variable and put your configuration in it. To use a more custom configuration, you can define a `matrix_dimension_configuration_extension_yaml` string variable and put your configuration in it. To learn more about how to do this, refer to the information about `matrix_dimension_configuration_extension_yaml` in the [default variables file](../roles/custom/matrix-dimension/defaults/main.yml) of the Dimension component.
To learn more about how to do this, refer to the information about `matrix_dimension_configuration_extension_yaml` in the [default variables file](../roles/custom/matrix-dimension/defaults/main.yml) of the Dimension component.
You can find all configuration options on [GitHub page of Dimension project](https://github.com/turt2live/matrix-dimension/blob/master/config/default.yaml). You can find all configuration options on [GitHub page of Dimension project](https://github.com/turt2live/matrix-dimension/blob/master/config/default.yaml).

View File

@ -1,24 +1,40 @@
# Dynamic DNS # Setting up Dynamic DNS (optional)
## Setup The playbook can configure Dynamic DNS with [ddclient](https://github.com/ddclient/ddclient) for you. It is a Perl client used to update dynamic DNS entries for accounts on Dynamic DNS Network Service Provider.
Most cloud providers / ISPs will charge you extra for a static IP address. If you're Most cloud providers / ISPs will charge you extra for a static IP address. If you're not hosting a highly reliable homeserver you can workaround this via dynamic DNS.
not hosting a highly reliable homeserver you can workaround this via dynamic DNS. To
set this up, you'll need to get the username/password from your DNS provider. For ## Prerequisite
google domains, this process is described [here](https://support.google.com/domains/answer/6147083).
After you've gotten the proper credentials you can add the following config to your `inventory/host_vars/matrix.DOMAIN/vars.yml`: You'll need to get a username and password from your DNS provider. Please consult with the provider about how to retrieve them.
## Adjusting the playbook configuration
To enable dynamic DNS, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_dynamic_dns_enabled: true matrix_dynamic_dns_enabled: true
matrix_dynamic_dns_domain_configurations: matrix_dynamic_dns_domain_configurations:
- provider: domains.google.com - provider: example.net
protocol: dyndn2 protocol: dyndn2
username: XXXXXXXXXXXXXXXX username: YOUR_USERNAME_HERE
password: XXXXXXXXXXXXXXXX password: YOUR_PASSWORD_HERE
domain: "{{ matrix_domain }}" domain: "{{ matrix_domain }}"
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
## Additional Reading ## Additional Reading

View File

@ -2,23 +2,21 @@
By default, this playbook sets up an [Exim](https://www.exim.org/) email server through which all Matrix services send emails. By default, this playbook sets up an [Exim](https://www.exim.org/) email server through which all Matrix services send emails.
The email server would attempt to deliver emails directly to their final destination. The email server would attempt to deliver emails directly to their final destination. This may or may not work, depending on your domain configuration (SPF settings, etc.)
This may or may not work, depending on your domain configuration (SPF settings, etc.)
By default, emails are sent from `matrix@<your-domain-name>` (as specified by the `exim_relay_sender_address` playbook variable). By default, emails are sent from `matrix@matrix.example.com`, as specified by the `exim_relay_sender_address` playbook variable.
**Note**: If you are using a Google Cloud instance, [port 25 is always blocked](https://cloud.google.com/compute/docs/tutorials/sending-mail/), so you need to relay email through another SMTP server as described below. ⚠️ **Warning**: On some cloud providers (Google Cloud, etc.), [port 25 is always blocked](https://cloud.google.com/compute/docs/tutorials/sending-mail/), so sending email directly from your server is not possible. You will need to [relay email through another SMTP server](#relaying-email-through-another-smtp-server).
💡 To improve deliverability, we recommend [relaying email through another SMTP server](#relaying-email-through-another-smtp-server) anyway.
## Firewall settings ## Firewall settings
No matter whether you send email directly (the default) or you relay email through another host (see how below), you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration). No matter whether you send email directly (the default) or you relay email through another host (see how below), you'll probably need to allow outgoing traffic for TCP ports 25/587 (depending on configuration).
## Relaying email through another SMTP server ## Relaying email through another SMTP server
If you'd like to relay email through another SMTP server, feel free to redefine a few playbook variables. If you'd like to relay email through another SMTP server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
Example:
```yaml ```yaml
exim_relay_sender_address: "another.sender@example.com" exim_relay_sender_address: "another.sender@example.com"
@ -32,8 +30,8 @@ exim_relay_relay_auth_password: "some-password"
**Note**: only the secure submission protocol (using `STARTTLS`, usually on port `587`) is supported. **SMTPS** (encrypted SMTP, usually on port `465`) **is not supported**. **Note**: only the secure submission protocol (using `STARTTLS`, usually on port `587`) is supported. **SMTPS** (encrypted SMTP, usually on port `465`) **is not supported**.
### Configuations for sending emails using Sendgrid ### Configuations for sending emails using Sendgrid
An easy and free SMTP service to set up is [Sendgrid](https://sendgrid.com/), the free tier allows for up to 100 emails per day to be sent. In the settings below you can provide any email for `exim_relay_sender_address`. An easy and free SMTP service to set up is [Sendgrid](https://sendgrid.com/), the free tier allows for up to 100 emails per day to be sent. In the settings below you can provide any email for `exim_relay_sender_address`.
The only other thing you need to change is the `exim_relay_relay_auth_password`, which you can generate at https://app.sendgrid.com/settings/api_keys. The API key password looks something like `SG.955oW1mLSfwds7i9Yd6IA5Q.q8GTaB8q9kGDzasegdG6u95fQ-6zkdwrPP8bOeuI`. The only other thing you need to change is the `exim_relay_relay_auth_password`, which you can generate at https://app.sendgrid.com/settings/api_keys. The API key password looks something like `SG.955oW1mLSfwds7i9Yd6IA5Q.q8GTaB8q9kGDzasegdG6u95fQ-6zkdwrPP8bOeuI`.

View File

@ -1,75 +1,97 @@
# Setting up Email2Matrix (optional) # Setting up Email2Matrix (optional)
**Note**: email bridging can also happen via the [Postmoogle](configuring-playbook-bot-postmoogle.md) bot supported by the playbook. **Note**: email bridging can also happen via the [Postmoogle](configuring-playbook-bridge-postmoogle.md) bridge supported by the playbook. Postmoogle is much more powerful and easier to use, so we recommend that you use it, instead of Email2Matrix.
Postmoogle is much more powerful and easier to use, so we recommend that you use it, instead of Email2Matrix.
The playbook can install and configure [email2matrix](https://github.com/devture/email2matrix) for you. The playbook can install and configure [email2matrix](https://github.com/devture/email2matrix) for you.
See the project's [documentation](https://github.com/devture/email2matrix/blob/master/docs/README.md) to learn what it does and why it might be useful to you. See the project's [documentation](https://github.com/devture/email2matrix/blob/master/docs/README.md) to learn what it does and why it might be useful to you.
## Preparation ## Preparation
### DNS configuration ### DNS configuration
It's not strictly necessary, but you may increase the chances that incoming emails reach your server by adding an `MX` record for `matrix.DOMAIN`, as described in the [Configuring DNS](configuring-dns.md) documentation page. It's not strictly necessary, but you may increase the chances that incoming emails reach your server by adding an `MX` record for `matrix.example.com`, as described in the [Configuring DNS](configuring-dns.md) documentation page.
### Port availability ### Port availability
Ensure that port 25 is available on your Matrix server and open in your firewall. Ensure that port 25 is available on your Matrix server and open in your firewall.
If you have `postfix` or some other email server software installed, you may need to manually remove it first (unless you need it, of course). If you have `postfix` or some other email server software installed, you may need to manually remove it first (unless you need it, of course).
If you really need to run an email server on the Matrix machine for other purposes, it may be possible to run Email2Matrix on another port (with a configuration like `matrix_email2matrix_smtp_host_bind_port: "127.0.0.01:2525"`) and have your other email server relay messages there. If you really need to run an email server on the Matrix machine for other purposes, it may be possible to run Email2Matrix on another port (with a configuration like `matrix_email2matrix_smtp_host_bind_port: "127.0.0.01:2525"`) and have your other email server relay messages there.
For details about using Email2Matrix alongside [Postfix](http://www.postfix.org/), see [here](https://github.com/devture/email2matrix/blob/master/docs/setup_with_postfix.md). For details about using Email2Matrix alongside [Postfix](http://www.postfix.org/), see [here](https://github.com/devture/email2matrix/blob/master/docs/setup_with_postfix.md).
### Creating a user ### Creating a user
Before enabling Email2Matrix, you'd most likely wish to create a dedicated user (or more) that would be sending messages on the Matrix side. Before enabling Email2Matrix, you'd most likely wish to create a dedicated user (or more) that would be sending messages on the Matrix side. Refer to [Registering users](registering-users.md) for ways to do that. A regular (non-admin) user works best.
Refer to [Registering users](registering-users.md) for ways to do that. A regular (non-admin) user works best.
### Creating a shared room ### Creating a shared room
After creating a sender user, you should create one or more Matrix rooms that you share with that user. After creating a sender user, you should create one or more Matrix rooms that you share with that user. It doesn't matter who creates and owns the rooms and who joins later (you or the sender user).
It doesn't matter who creates and owns the rooms and who joins later (you or the sender user).
What matters is that both you and the sender user are part of the same room and that the sender user has enough privileges in the room to be able to send messages there. What matters is that both you and the sender user are part of the same room and that the sender user has enough privileges in the room to be able to send messages there.
Inviting additional people to the room is okay too. Inviting additional people to the room is okay too.
Take note of each room's room id (different clients show the room id in a different place). Take note of each room's room ID (different clients show the room ID in a different place). You'll need the room ID when [configuring the playbook](#adjusting-the-playbook-configuration) below.
You'll need the room id when doing [Configuration](#configuration) below.
### Obtaining an access token for the sender user ### Obtaining an access token for the sender user
In order for the sender user created above to be able to send messages to the room, we'll need to obtain an access token for it. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md). In order for the sender user created above to be able to send messages to the room, we'll need to obtain an access token for it. Refer to the documentation on [how to obtain an access token](obtaining-access-tokens.md).
## Configuration ## Adjusting the playbook configuration
After doing the preparation steps above, adjust your `inventory/host_vars/matrix.DOMAIN/vars.yml` configuration like this: After doing the preparation steps above, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
matrix_email2matrix_enabled: true matrix_email2matrix_enabled: true
matrix_email2matrix_matrix_mappings: matrix_email2matrix_matrix_mappings:
- MailboxName: "my-mailbox" - MailboxName: "mailbox1"
MatrixRoomId: "!someRoom:DOMAIN" MatrixRoomId: "!qporfwt:{{ matrix_domain }}"
MatrixHomeserverUrl: "https://matrix.DOMAIN" MatrixHomeserverUrl: "{{ matrix_homeserver_url }}"
MatrixUserId: "@email2matrix:DOMAIN" MatrixUserId: "@email2matrix:{{ matrix_domain }}"
MatrixAccessToken: "ACCESS_TOKEN_GOES_HERE" MatrixAccessToken: "MATRIX_ACCESS_TOKEN_HERE"
IgnoreSubject: false IgnoreSubject: false
IgnoreBody: false IgnoreBody: false
SkipMarkdown: false SkipMarkdown: false
- MailboxName: "my-mailbox2" - MailboxName: "mailbox2"
MatrixRoomId: "!anotherRoom:DOMAIN" MatrixRoomId: "!aaabaa:{{ matrix_domain }}"
MatrixHomeserverUrl: "https://matrix.DOMAIN" MatrixHomeserverUrl: "{{ matrix_homeserver_url }}"
MatrixUserId: "@email2matrix:DOMAIN" MatrixUserId: "@email2matrix:{{ matrix_domain }}"
MatrixAccessToken: "ACCESS_TOKEN_GOES_HERE" MatrixAccessToken: "MATRIX_ACCESS_TOKEN_HERE"
IgnoreSubject: true IgnoreSubject: true
IgnoreBody: false IgnoreBody: false
SkipMarkdown: true SkipMarkdown: true
``` ```
You can also set `MatrixHomeserverUrl` to the container URL where your homeserver's Client-Server API lives by using the `{{ matrix_addons_homeserver_client_api_url }}` variable, instead of the public `https://matrix.DOMAIN` endpoint. where:
Re-run the playbook (`--tags=setup-email2matrix,start`) and try sending an email to `my-mailbox@matrix.DOMAIN`. * MailboxName - local-part of the email address, through which emails are bridged to the room whose ID is defined with MatrixRoomId
* MatrixRoomId - internal ID of the room, to which received emails are sent as Matrix message
* MatrixHomeserverUrl - URL of your Matrix homeserver, through which to send Matrix messages. You can also set `MatrixHomeserverUrl` to the container URL where your homeserver's Client-Server API lives by using the `{{ matrix_addons_homeserver_client_api_url }}` variable
* MatrixUserId - the full ID of the sender user which sends bridged messages to the room
* MatrixAccessToken - sender user's access token
* IgnoreSubject - if set to "true", the subject is not bridged to Matrix
* IgnoreBody - if set to "true", the message body is not bridged to Matrix
* SkipMarkdown - if set to "true", emails are bridged as plain text Matrix message instead of Markdown (actually HTML)
Refer to the official documentation [here](https://github.com/devture/email2matrix/blob/master/docs/configuration.md).
## Installing
To enable Email2Matrix, run the playbook with [playbook tags](playbook-tags.md) as below:
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-email2matrix,start
```
**Notes**:
- The shortcut commands with the [`just` program](just.md) are also available: `just run-tags setup-email2matrix,start` or `just setup-all`
`just run-tags setup-email2matrix,start` is useful for maintaining your setup quickly when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note `just setup-all` runs the `ensure-matrix-users-created` tag too.
- After installation, you may wish to send a test email to the email address assigned to `mailbox1` (default: `mailbox1@matrix.example.com`) to make sure that Email2Matrix works as expected.

View File

@ -1,18 +1,31 @@
# Setting up Etherpad (optional) # Setting up Etherpad (optional)
[Etherpad](https://etherpad.org) is an open source collaborative text editor that can be embedded in a Matrix chat room using the [Dimension integrations manager](https://dimension.t2bot.io) or used as standalone web app. [Etherpad](https://etherpad.org) is an open source collaborative text editor that can be embedded in a Matrix chat room using the [Dimension integration manager](https://dimension.t2bot.io) or used as standalone web app.
When enabled together with the Jitsi audio/video conferencing system (see [our docs on Jitsi](configuring-playbook-jitsi.md)), it will be made available as an option during the conferences. When enabled together with the Jitsi audio/video conferencing system (see [our docs on Jitsi](configuring-playbook-jitsi.md)), it will be made available as an option during the conferences.
## Adjusting the playbook configuration
## Decide on a domain and path To enable Etherpad, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
By default, Etherpad is configured to use its own dedicated domain (`etherpad.DOMAIN`) and requires you to [adjust your DNS records](#adjusting-dns-records).
You can override the domain and path like this:
```yaml ```yaml
# Switch to the domain used for Matrix services (`matrix.DOMAIN`), etherpad_enabled: true
# Uncomment and adjust this part if you'd like to enable the admin web UI
# etherpad_admin_username: YOUR_USERNAME_HERE
# etherpad_admin_password: YOUR_PASSWORD_HERE
```
### Adjusting the Etherpad URL
By default, this playbook installs Etherpad on the `etherpad.` subdomain (`etherpad.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `etherpad_hostname` and `etherpad_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for Etherpad. # so we won't need to add additional DNS records for Etherpad.
etherpad_hostname: "{{ matrix_server_fqn_matrix }}" etherpad_hostname: "{{ matrix_server_fqn_matrix }}"
@ -20,64 +33,65 @@ etherpad_hostname: "{{ matrix_server_fqn_matrix }}"
etherpad_path_prefix: /etherpad etherpad_path_prefix: /etherpad
``` ```
## Adjusting DNS records ## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Etherpad domain to the Matrix server. Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Etherpad domain to the Matrix server.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration. By default, you will need to create a CNAME record for `etherpad`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Installing ## Installing
[Etherpad](https://etherpad.org) installation is disabled by default. You can enable it in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
```yaml <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
etherpad_enabled: true ```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
# Uncomment below to enable the admin web UI
# etherpad_admin_username: admin
# etherpad_admin_password: some-password
``` ```
Then, [run the installation process](installing.md) again (e.g. `just install-all`). **Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the Etherpad admin user (`etherpad_admin_username`).
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
- If you change the Etherpad admin user's password (`etherpad_admin_password` in your `vars.yml` file) subsequently, the admin user's credentials on the homeserver won't be updated automatically. If you'd like to change the admin user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `etherpad_admin_password` to let the admin user know its new password.
## Usage ## Usage
The Etherpad UI should be available at `https://etherpad.<your-domain>`, while the admin UI (if enabled) should then be available at `https://etherpad.<your-domain>/admin`. The Etherpad UI should be available at `https://etherpad.example.com`, while the admin UI (if enabled) should then be available at `https://etherpad.example.com/admin`.
If you've [decided on another hostname or path-prefix](#decide-on-a-domain-and-path) (e.g. `https://matrix.DOMAIN/etherpad`), adjust these URLs accordingly before usage.
If you've [decided on another hostname or path-prefix](#adjusting-the-etherpad-url) (e.g. `https://matrix.example.com/etherpad`), adjust these URLs accordingly before usage.
### Managing / Deleting old pads ### Managing / Deleting old pads
If you want to manage and remove old unused pads from Etherpad, you will first need to able Admin access as described above. If you want to manage and remove old unused pads from Etherpad, you will first need to able Admin access as described above.
Then from the plugin manager page (`https://etherpad.<your-domain>/admin/plugins`, install the `adminpads2` plugin. Once installed, you should have a "Manage pads" section in the Admin web-UI. Then from the plugin manager page (`https://etherpad.example.com/admin/plugins`, install the `adminpads2` plugin. Once installed, you should have a "Manage pads" section in the Admin web-UI.
### How to use Etherpad widgets without an integration manager (like Dimension)
### How to use Etherpad widgets without an Integration Manager (like Dimension) This is how it works in Element Web, it might work quite similar with other clients:
This is how it works in Element, it might work quite similar with other clients:
To integrate a standalone etherpad in a room, create your pad by visiting `https://etherpad.DOMAIN`. When the pad opens, copy the URL and send a command like this to the room: `/addwidget URL`. You will then find your integrated Etherpad within the right sidebar in the `Widgets` section.
To integrate a standalone Etherpad in a room, create your pad by visiting `https://etherpad.example.com`. When the pad opens, copy the URL and send a command like this to the room: `/addwidget URL`. You will then find your integrated Etherpad within the right sidebar in the `Widgets` section.
### Set Dimension default to the self-hosted Etherpad (optional) ### Set Dimension default to the self-hosted Etherpad (optional)
If you decided to install [Dimension integration manager](configuring-playbook-dimension.md) alongside Etherpad, the Dimension administrator users can configure the default URL template. If you decided to install [Dimension integration manager](configuring-playbook-dimension.md) alongside Etherpad, the Dimension administrator users can configure the default URL template.
The Dimension configuration menu can be accessed with the sprocket icon as you begin to add a widget to a room in Element. There you will find the Etherpad Widget Configuration action beneath the _Widgets_ tab.
The Dimension configuration menu can be accessed with the sprocket icon as you begin to add a widget to a room in Element Web. There you will find the Etherpad Widget Configuration action beneath the _Widgets_ tab.
#### Removing the integrated Etherpad chat #### Removing the integrated Etherpad chat
If you wish to disable the Etherpad chat button, you can do it by appending `?showChat=false` to the end of the pad URL, or the template. If you wish to disable the Etherpad chat button, you can do it by appending `?showChat=false` to the end of the pad URL, or the template.
Example: `https://etherpad.<your-domain>/p/$roomId_$padName?showChat=false` Example: `https://etherpad.example.com/p/$roomId_$padName?showChat=false`
## Known issues ## Known issues
If your Etherpad widget fails to load, this might be due to Dimension generating a Pad name so long, the Etherpad app rejects it. If your Etherpad widget fails to load, this might be due to Dimension generating a Pad name so long, the Etherpad app rejects it.
`$roomId_$padName` can end up being longer than 50 characters. You can avoid having this problem by altering the template so it only contains the three word random identifier `$padName`. `$roomId_$padName` can end up being longer than 50 characters. You can avoid having this problem by altering the template so it only contains the three word random identifier `$padName`.

View File

@ -1,16 +1,13 @@
# Using an external PostgreSQL server (optional) # Using an external PostgreSQL server (optional)
By default, this playbook would set up a PostgreSQL database server on your machine, running in a Docker container. By default, this playbook would set up a PostgreSQL database server on your machine, running in a Docker container. If that's okay, you can skip this document.
If that's alright, you can skip this.
If you'd like to use an external PostgreSQL server that you manage, you can edit your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`). **Note**: using **an external Postgres server is currently [not very seamless](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1682#issuecomment-1061461683) when it comes to enabling various other playbook services** - you will need to create a new database/credentials for each service and to point each service to its corresponding database using custom `vars.yml` configuration. **For the best experience with the playbook, stick to using the integrated Postgres server**.
**NOTE**: using **an external Postgres server is currently [not very seamless](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1682#issuecomment-1061461683) when it comes to enabling various other playbook services** - you will need to create a new database/credentials for each service and to point each service to its corresponding database using custom `vars.yml` configuration. **For the best experience with the playbook, stick to using the integrated Postgres server**. If you'd like to use an external Postgres server that you manage, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
If you'd like to use an external Postgres server, use a custom `vars.yml` configuration like this:
```yaml ```yaml
devture_postgres_enabled: false postgres_enabled: false
# Rewire Synapse to use your external Postgres server # Rewire Synapse to use your external Postgres server
matrix_synapse_database_host: "your-postgres-server-hostname" matrix_synapse_database_host: "your-postgres-server-hostname"
@ -20,11 +17,10 @@ matrix_synapse_database_database: "your-postgres-server-database-name"
# Rewire any other service (each `matrix-*` role) you may wish to use to use your external Postgres server. # Rewire any other service (each `matrix-*` role) you may wish to use to use your external Postgres server.
# Each service expects to have its own dedicated database on the Postgres server # Each service expects to have its own dedicated database on the Postgres server
# and uses its own variable names (see `roles/custom/matrix-*/defaults/main.yml) for configuring Postgres connectivity. # and uses its own variable names (see `roles/custom/matrix-*/defaults/main.yml`) for configuring Postgres connectivity.
``` ```
The database (as specified in `matrix_synapse_database_database`) must exist and be accessible with the given credentials. The database (as specified in `matrix_synapse_database_database`) must exist and be accessible with the given credentials. It must be empty or contain a valid Synapse database. If empty, Synapse would populate it the first time it runs.
It must be empty or contain a valid Synapse database. If empty, Synapse would populate it the first time it runs.
**Note**: the external server that you specify in `matrix_synapse_database_host` must be accessible from within the `matrix-synapse` Docker container (and possibly other containers too). This means that it either needs to be a publicly accessible hostname or that it's a hostname on the same Docker network where all containers installed by this playbook run (a network called `matrix` by default). Using a local PostgreSQL instance on the host (running on the same machine, but not in a container) is not possible. **Note**: the external server that you specify in `matrix_synapse_database_host` must be accessible from within the `matrix-synapse` Docker container (and possibly other containers too). This means that it either needs to be a publicly accessible hostname or that it's a hostname on the same Docker network where all containers installed by this playbook run (a network called `matrix` by default). Using a local PostgreSQL instance on the host (running on the same machine, but not in a container) is not possible.

View File

@ -1,36 +1,34 @@
# Controlling Matrix federation (optional) # Controlling Matrix federation (optional)
By default, your server federates with the whole Matrix network. By default, your server federates with the whole Matrix network. That is, people on your server can communicate with people on any other Matrix server.
That is, people on your server can communicate with people on any other Matrix server.
**Note**: in the sample `vars.yml` ([`examples/vars.yml`](../examples/vars.yml)), we recommend to use a short user identifier like `@<username>:example.com` and set up [server delegation](howto-server-delegation.md) / redirection. Without a proper configuration, your server will effectively not be part of the Matrix network. If you find your server is not federated, make sure to [check whether services work](maintenance-checking-services.md) and your server is properly delegated.
## Federating only with select servers ## Federating only with select servers
To make your server only federate with servers of your choosing, add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): To make your server only federate with servers of your choosing, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
matrix_synapse_federation_domain_whitelist: matrix_synapse_federation_domain_whitelist:
- example.com - example.com
- another.com - example.net
``` ```
If you wish to disable federation, you can do that with an empty list (`[]`), or better yet by completely disabling federation (see below). If you wish to disable federation, you can do that with an empty list (`[]`), or better yet by completely disabling federation (see below).
## Exposing the room directory over federation ## Exposing the room directory over federation
By default, your server's public rooms directory is not exposed to other servers via federation. By default, your server's public rooms directory is not exposed to other servers via federation.
If you wish to expose it, add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): If you wish to expose it, add this to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`):
```yaml ```yaml
matrix_synapse_allow_public_rooms_over_federation: true matrix_synapse_allow_public_rooms_over_federation: true
``` ```
## Disabling federation ## Disabling federation
To completely disable federation, isolating your server from the rest of the Matrix network, add this to your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): To completely disable federation, isolating your server from the rest of the Matrix network, add this to your configuration file (`inventory/host_vars/matrix.example.com/vars.yml`):
```yaml ```yaml
matrix_homeserver_federation_enabled: false matrix_homeserver_federation_enabled: false
@ -54,10 +52,9 @@ matrix_synapse_reverse_proxy_companion_federation_api_enabled: false
Why? This change could be useful for people running small Synapse instances on small severs/VPSes to avoid being impacted by a simple DOS/DDOS when bandwidth, RAM, an CPU resources are limited and if your hosting provider does not provide a DOS/DDOS protection. Why? This change could be useful for people running small Synapse instances on small severs/VPSes to avoid being impacted by a simple DOS/DDOS when bandwidth, RAM, an CPU resources are limited and if your hosting provider does not provide a DOS/DDOS protection.
The following changes in the configuration file (`inventory/host_vars/matrix.example.com/vars.yml`) will allow this and make it possible to proxy the federation through a CDN such as CloudFlare or any other:
The following changes in the configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`) will allow this and make it possible to proxy the federation through a CDN such as CloudFlare or any other: ```yaml
```
matrix_synapse_http_listener_resource_names: ["client","federation"] matrix_synapse_http_listener_resource_names: ["client","federation"]
# Any port can be used but in this case we use 443 # Any port can be used but in this case we use 443
matrix_federation_public_port: 443 matrix_federation_public_port: 443

View File

@ -1,55 +1,62 @@
# Jitsi # Setting up the Jitsi video-conferencing platform (optional)
The playbook can install the [Jitsi](https://jitsi.org/) video-conferencing platform and integrate it with [Element](configuring-playbook-client-element.md). The playbook can install the [Jitsi](https://jitsi.org/) video-conferencing platform and integrate it with Element clients ([Element Web](configuring-playbook-client-element-web.md)/Desktop, Android and iOS).
Jitsi installation is **not enabled by default**, because it's not a core component of Matrix services. Jitsi installation is **not enabled by default**, because it's not a core component of Matrix services.
The setup done by the playbook is very similar to [docker-jitsi-meet](https://github.com/jitsi/docker-jitsi-meet). You can refer to the documentation there for many of the options here. The setup done by the playbook is very similar to [docker-jitsi-meet](https://github.com/jitsi/docker-jitsi-meet). You can refer to the documentation there for many of the options here.
## Prerequisites ## Prerequisites
Before installing Jitsi, make sure you've created the `jitsi.DOMAIN` DNS record (unless you've changed `jitsi_hostname`, as described below). See [Configuring DNS](configuring-dns.md) for details about DNS changes. You may need to open the following ports to your server:
You may also need to open the following ports to your server:
- `4443/tcp` - RTP media fallback over TCP - `4443/tcp` - RTP media fallback over TCP
- `10000/udp` - RTP media over UDP. Depending on your firewall/NAT setup, incoming RTP packets on port `10000` may have the external IP of your firewall as destination address, due to the usage of STUN in JVB (see [`jitsi_jvb_stun_servers`](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/defaults/main.yml)). - `10000/udp` - RTP media over UDP. Depending on your firewall/NAT setup, incoming RTP packets on port `10000` may have the external IP of your firewall as destination address, due to the usage of STUN in JVB (see [`jitsi_jvb_stun_servers`](https://github.com/mother-of-all-self-hosting/ansible-role-jitsi/blob/main/defaults/main.yml)).
## Adjusting the playbook configuration
## Installation To enable Jitsi, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
Add this to your `inventory/host_vars/matrix.DOMAIN/vars.yml` configuration:
```yaml ```yaml
jitsi_enabled: true jitsi_enabled: true
# Uncomment and adjust if you need to use another hostname
# jitsi_hostname: "jitsi.{{ matrix_domain }}"
# Uncomment and possible adjust if you'd like to host under a subpath
# jitsi_path_prefix: /jitsi
``` ```
### Adjusting the Jitsi URL
By default, this playbook installs Jitsi on the `jitsi.` subdomain (`jitsi.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `jitsi_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname
jitsi_hostname: call.example.com
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Jitsi domain to the Matrix server.
By default, you will need to create a CNAME record for `jitsi`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
## (Optional) Configure Jitsi authentication and guests mode ## (Optional) Configure Jitsi authentication and guests mode
By default the Jitsi Meet instance does not require any kind of login and is open to use for anyone without registration. By default the Jitsi Meet instance does not require any kind of login and is open to use for anyone without registration.
If you're fine with such an open Jitsi instance, please skip to [Apply changes](#apply-changes). If you're fine with such an open Jitsi instance, please skip to [Installing](#installing).
If you would like to control who is allowed to open meetings on your new Jitsi instance, then please follow the following steps to enable Jitsi's authentication and optionally guests mode. If you would like to control who is allowed to open meetings on your new Jitsi instance, then please follow the following steps to enable Jitsi's authentication and optionally guests mode.
Currently, there are three supported authentication modes: 'internal' (default), 'matrix' and 'ldap'. Currently, there are three supported authentication modes: 'internal' (default), 'matrix' and 'ldap'.
**Note:** Authentication is not tested via the playbook's self-checks. **Note**: Authentication is not tested via the playbook's self-checks. We therefore recommend that you manually verify if authentication is required by jitsi. For this, try to manually create a conference on jitsi.example.com in your browser.
We therefore recommend that you manually verify if authentication is required by jitsi.
For this, try to manually create a conference on jitsi.DOMAIN in your browser.
### Authenticate using Jitsi accounts (Auth-Type 'internal') ### Authenticate using Jitsi accounts (Auth-Type 'internal')
The default authentication mechanism is 'internal' auth, which requires jitsi-accounts to be setup and is the recommended setup, as it also works in federated rooms.
With authentication enabled, all meeting rooms have to be opened by a registered user, after which guests are free to join.
If a registered host is not yet present, guests are put on hold in individual waiting rooms.
Add these lines to your `inventory/host_vars/matrix.DOMAIN/vars.yml` configuration: The default authentication mechanism is 'internal' auth, which requires jitsi-accounts to be setup and is the recommended setup, as it also works in federated rooms. With authentication enabled, all meeting rooms have to be opened by a registered user, after which guests are free to join. If a registered host is not yet present, guests are put on hold in individual waiting rooms.
Add these lines to your `inventory/host_vars/matrix.example.com/vars.yml` configuration:
```yaml ```yaml
jitsi_enable_auth: true jitsi_enable_auth: true
@ -61,7 +68,7 @@ jitsi_prosody_auth_internal_accounts:
password: "another-password" password: "another-password"
``` ```
**Caution:** Accounts added here and subsequently removed will not be automatically removed from the Prosody server until user account cleaning is integrated into the playbook. **Caution**: Accounts added here and subsequently removed will not be automatically removed from the Prosody server until user account cleaning is integrated into the playbook.
**If you get an error** like this: "Error: Account creation/modification not supported.", it's likely that you had previously installed Jitsi without auth/guest support. In such a case, you should look into [Rebuilding your Jitsi installation](#rebuilding-your-jitsi-installation). **If you get an error** like this: "Error: Account creation/modification not supported.", it's likely that you had previously installed Jitsi without auth/guest support. In such a case, you should look into [Rebuilding your Jitsi installation](#rebuilding-your-jitsi-installation).
@ -69,8 +76,7 @@ jitsi_prosody_auth_internal_accounts:
**Attention: Probably breaks Jitsi in federated rooms and does not allow sharing conference links with guests.** **Attention: Probably breaks Jitsi in federated rooms and does not allow sharing conference links with guests.**
Using this authentication type require a [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service). Using this authentication type require a [Matrix User Verification Service](https://github.com/matrix-org/matrix-user-verification-service). By default, this playbook creates and configures a user-verification-service to run locally, see [configuring-user-verification-service](configuring-playbook-user-verification-service.md).
By default, this playbook creates and configures a user-verification-service to run locally, see [configuring-user-verification-service](configuring-playbook-user-verification-service.md).
To enable set this configuration at host level: To enable set this configuration at host level:
@ -89,8 +95,8 @@ An example LDAP configuration could be:
```yaml ```yaml
jitsi_enable_auth: true jitsi_enable_auth: true
jitsi_auth_type: ldap jitsi_auth_type: ldap
jitsi_ldap_url: "ldap://ldap.DOMAIN" jitsi_ldap_url: "ldap://ldap.example.com"
jitsi_ldap_base: "OU=People,DC=DOMAIN" jitsi_ldap_base: "OU=People,DC=example.com"
#jitsi_ldap_binddn: "" #jitsi_ldap_binddn: ""
#jitsi_ldap_bindpw: "" #jitsi_ldap_bindpw: ""
jitsi_ldap_filter: "uid=%u" jitsi_ldap_filter: "uid=%u"
@ -106,7 +112,6 @@ jitsi_ldap_start_tls: false
For more information refer to the [docker-jitsi-meet](https://github.com/jitsi/docker-jitsi-meet#authentication-using-ldap) and the [saslauthd `LDAP_SASLAUTHD`](https://github.com/winlibs/cyrus-sasl/blob/master/saslauthd/LDAP_SASLAUTHD) documentation. For more information refer to the [docker-jitsi-meet](https://github.com/jitsi/docker-jitsi-meet#authentication-using-ldap) and the [saslauthd `LDAP_SASLAUTHD`](https://github.com/winlibs/cyrus-sasl/blob/master/saslauthd/LDAP_SASLAUTHD) documentation.
## (Optional) Making your Jitsi server work on a LAN ## (Optional) Making your Jitsi server work on a LAN
By default the Jitsi Meet instance does not work with a client in LAN (Local Area Network), even if others are connected from WAN. There are no video and audio. In the case of WAN to WAN everything is ok. By default the Jitsi Meet instance does not work with a client in LAN (Local Area Network), even if others are connected from WAN. There are no video and audio. In the case of WAN to WAN everything is ok.
@ -115,7 +120,7 @@ The reason is the Jitsi VideoBridge git to LAN client the IP address of the dock
Here is how to do it in the playbook. Here is how to do it in the playbook.
Add these two lines to your `inventory/host_vars/matrix.DOMAIN/vars.yml` configuration: Add these two lines to your `inventory/host_vars/matrix.example.com/vars.yml` configuration:
```yaml ```yaml
jitsi_jvb_container_extra_arguments: jitsi_jvb_container_extra_arguments:
@ -124,7 +129,7 @@ jitsi_jvb_container_extra_arguments:
## (Optional) Fine tune Jitsi ## (Optional) Fine tune Jitsi
Sample **additional** `inventory/host_vars/matrix.DOMAIN/vars.yml` configuration to save up resources (explained below): Sample **additional** `inventory/host_vars/matrix.example.com/vars.yml` configuration to save up resources (explained below):
```yaml ```yaml
jitsi_web_custom_config_extension: | jitsi_web_custom_config_extension: |
@ -139,14 +144,11 @@ jitsi_web_config_resolution_width_ideal_and_max: 480
jitsi_web_config_resolution_height_ideal_and_max: 240 jitsi_web_config_resolution_height_ideal_and_max: 240
``` ```
You may want to **suspend unused video layers** until they are requested again, to save up resources on both server and clients. You may want to **suspend unused video layers** until they are requested again, to save up resources on both server and clients. Read more on this feature [here](https://jitsi.org/blog/new-off-stage-layer-suppression-feature/)
Read more on this feature [here](https://jitsi.org/blog/new-off-stage-layer-suppression-feature/)
You may wish to **disable audio levels** to avoid excessive refresh of the client-side page and decrease the CPU consumption involved. You may wish to **disable audio levels** to avoid excessive refresh of the client-side page and decrease the CPU consumption involved.
You may want to **limit the number of video feeds forwarded to each client**, to save up resources on both server and clients. As clients bandwidth and CPU may not bear the load, use this setting to avoid lag and crashes. You may want to **limit the number of video feeds forwarded to each client**, to save up resources on both server and clients. As clients bandwidth and CPU may not bear the load, use this setting to avoid lag and crashes. This feature is found by default in other webconference applications such as Office 365 Teams (limit is set to 4). Read how it works [here](https://github.com/jitsi/jitsi-videobridge/blob/master/doc/last-n.md) and performance evaluation on this [study](https://jitsi.org/wp-content/uploads/2016/12/nossdav2015lastn.pdf).
This feature is found by default in other webconference applications such as Office 365 Teams (limit is set to 4).
Read how it works [here](https://github.com/jitsi/jitsi-videobridge/blob/master/doc/last-n.md) and performance evaluation on this [study](https://jitsi.org/wp-content/uploads/2016/12/nossdav2015lastn.pdf).
You may want to **limit the maximum video resolution**, to save up resources on both server and clients. You may want to **limit the maximum video resolution**, to save up resources on both server and clients.
@ -164,30 +166,28 @@ jitsi_prosody_max_participants: 4 # example value
By default, a single JVB ([Jitsi VideoBridge](https://github.com/jitsi/jitsi-videobridge)) is deployed on the same host as the Matrix server. To allow more video-conferences to happen at the same time, you may need to provision additional JVB services on other hosts. By default, a single JVB ([Jitsi VideoBridge](https://github.com/jitsi/jitsi-videobridge)) is deployed on the same host as the Matrix server. To allow more video-conferences to happen at the same time, you may need to provision additional JVB services on other hosts.
There is an ansible playbook that can be run with the following tag: There is an ansible playbook that can be run with the following tag: `ansible-playbook -i inventory/hosts --limit jitsi_jvb_servers jitsi_jvb.yml --tags=common,setup-additional-jitsi-jvb,start`
`ansible-playbook -i inventory/hosts --limit jitsi_jvb_servers jitsi_jvb.yml --tags=common,setup-additional-jitsi-jvb,start`
For this role to work you will need an additional section in the ansible hosts file with the details of the JVB hosts, for example: For this role to work you will need an additional section in the ansible hosts file with the details of the JVB hosts, for example:
```
```INI
[jitsi_jvb_servers] [jitsi_jvb_servers]
<your jvb hosts> ansible_host=<ip address of the jvb host> <your jvb hosts> ansible_host=<ip address of the jvb host>
``` ```
Each JVB will require a server id to be set so that it can be uniquely identified and this allows Jitsi to keep track of which conferences are on which JVB. Each JVB will require a server ID to be set so that it can be uniquely identified and this allows Jitsi to keep track of which conferences are on which JVB. The server ID is set with the variable `jitsi_jvb_server_id` which ends up as the JVB_WS_SERVER_ID environment variables in the JVB docker container. This variable can be set via the host file, a parameter to the ansible command or in the `vars.yaml` for the host which will have the additional JVB. For example:
The server id is set with the variable `jitsi_jvb_server_id` which ends up as the JVB_WS_SERVER_ID environment variables in the JVB docker container.
This variable can be set via the host file, a parameter to the ansible command or in the `vars.yaml` for the host which will have the additional JVB. For example:
``` yaml ```yaml
jitsi_jvb_server_id: 'jvb-2' jitsi_jvb_server_id: 'jvb-2'
``` ```
``` INI ```INI
[jitsi_jvb_servers] [jitsi_jvb_servers]
jvb-2.example.com ansible_host=192.168.0.2 jitsi_jvb_server_id=jvb-2 jvb-2.example.com ansible_host=192.168.0.2 jitsi_jvb_server_id=jvb-2
jvb-3.example.com ansible_host=192.168.0.3 jitsi_jvb_server_id=jvb-2 jvb-3.example.com ansible_host=192.168.0.3 jitsi_jvb_server_id=jvb-2
``` ```
Note that the server id `jvb-1` is reserved for the JVB instance running on the Matrix host and therefore should not be used as the id of an additional jvb host. Note that the server ID `jvb-1` is reserved for the JVB instance running on the Matrix host and therefore should not be used as the ID of an additional jvb host.
The additional JVB will also need to expose the colibri web socket port and this can be done with the following variable: The additional JVB will also need to expose the colibri web socket port and this can be done with the following variable:
@ -195,22 +195,19 @@ The additional JVB will also need to expose the colibri web socket port and this
jitsi_jvb_container_colibri_ws_host_bind_port: 9090 jitsi_jvb_container_colibri_ws_host_bind_port: 9090
``` ```
The JVB will also need to know where the prosody xmpp server is located, similar to the server id this can be set in the vars for the JVB by using the variable The JVB will also need to know where the prosody xmpp server is located, similar to the server ID this can be set in the vars for the JVB by using the variable `jitsi_xmpp_server`. The Jitsi prosody container is deployed on the Matrix server by default so the value can be set to the Matrix domain. For example:
`jitsi_xmpp_server`. The Jitsi prosody container is deployed on the matrix server by default so the value can be set to the matrix domain. For example:
```yaml ```yaml
jitsi_xmpp_server: "{{ matrix_domain }}" jitsi_xmpp_server: "{{ matrix_domain }}"
``` ```
However, it can also be set the ip address of the matrix server. This can be useful if you wish to use a private ip. For example: However, it can also be set the ip address of the Matrix server. This can be useful if you wish to use a private ip. For example:
```yaml ```yaml
jitsi_xmpp_server: "192.168.0.1" jitsi_xmpp_server: "192.168.0.1"
``` ```
For the JVB to be able to contact the XMPP server, the latter must expose the XMPP port (5222). By default, the Matrix server does not expose the For the JVB to be able to contact the XMPP server, the latter must expose the XMPP port (5222). By default, the Matrix server does not expose the port; only the XMPP container exposes it internally inside the host, which means that the first JVB (which runs on the Matrix server) can reach it but the additional JVB cannot. The port is exposed by setting `jitsi_prosody_container_jvb_host_bind_port` like this:
port; only the XMPP container exposes it internally inside the host, which means that the first JVB (which runs on the Matrix server) can reach it but
the additional JVB cannot. The port is exposed by setting `jitsi_prosody_container_jvb_host_bind_port` like this:
```yaml ```yaml
jitsi_prosody_container_jvb_host_bind_port: 5222 jitsi_prosody_container_jvb_host_bind_port: 5222
@ -218,8 +215,7 @@ jitsi_prosody_container_jvb_host_bind_port: 5222
(The default is empty; if it's set then docker forwards the port.) (The default is empty; if it's set then docker forwards the port.)
Applied together this will allow you to provision extra JVB instances which will register themselves with the prosody service and be available for jicofo Applied together this will allow you to provision extra JVB instances which will register themselves with the prosody service and be available for jicofo to route conferences too.
to route conferences too.
To make Traefik reverse-proxy to these additional JVBs (living on other hosts), **you would need to add the following Traefik configuration extension**: To make Traefik reverse-proxy to these additional JVBs (living on other hosts), **you would need to add the following Traefik configuration extension**:
@ -227,20 +223,20 @@ To make Traefik reverse-proxy to these additional JVBs (living on other hosts),
# Traefik proxying for additional JVBs. These can't be configured using Docker # Traefik proxying for additional JVBs. These can't be configured using Docker
# labels, like the first JVB is, because they run on different hosts, so we add # labels, like the first JVB is, because they run on different hosts, so we add
# the necessary configuration to the file provider. # the necessary configuration to the file provider.
devture_traefik_provider_configuration_extension_yaml: | traefik_provider_configuration_extension_yaml: |
http: http:
routers: routers:
{% for host in groups['jitsi_jvb_servers'] %} {% for host in groups['jitsi_jvb_servers'] %}
additional-{{ hostvars[host]['jitsi_jvb_server_id'] }}-router: additional-{{ hostvars[host]['jitsi_jvb_server_id'] }}-router:
entryPoints: entryPoints:
- "{{ devture_traefik_entrypoint_primary }}" - "{{ traefik_entrypoint_primary }}"
rule: "Host(`{{ jitsi_hostname }}`) && PathPrefix(`/colibri-ws/{{ hostvars[host]['jitsi_jvb_server_id'] }}/`)" rule: "Host(`{{ jitsi_hostname }}`) && PathPrefix(`/colibri-ws/{{ hostvars[host]['jitsi_jvb_server_id'] }}/`)"
service: additional-{{ hostvars[host]['jitsi_jvb_server_id'] }}-service service: additional-{{ hostvars[host]['jitsi_jvb_server_id'] }}-service
{% if devture_traefik_entrypoint_primary != 'web' %} {% if traefik_entrypoint_primary != 'web' %}
tls: tls:
certResolver: "{{ devture_traefik_certResolver_primary }}" certResolver: "{{ traefik_certResolver_primary }}"
{% endif %} {% endif %}
@ -259,8 +255,7 @@ devture_traefik_provider_configuration_extension_yaml: |
## (Optional) Enable Gravatar ## (Optional) Enable Gravatar
In the default Jisti Meet configuration, gravatar.com is enabled as an avatar service. This results in third party request leaking data to gravatar. In the default Jisti Meet configuration, gravatar.com is enabled as an avatar service. This results in third party request leaking data to gravatar. Since Element clients already send the url of configured Matrix avatars to Jitsi, we disabled gravatar.
Since element already sends the url of configured Matrix avatars to Jitsi, we disabled gravatar.
To enable Gravatar set: To enable Gravatar set:
@ -268,27 +263,33 @@ To enable Gravatar set:
jitsi_disable_gravatar: false jitsi_disable_gravatar: false
``` ```
**Beware:** This leaks information to a third party, namely the Gravatar-Service (unless configured otherwise: gravatar.com). **Beware**: This leaks information to a third party, namely the Gravatar-Service (unless configured otherwise: gravatar.com). Besides metadata, this includes the Matrix user_id and possibly the room identifier (via `referrer` header).
Besides metadata, this includes the matrix user_id and possibly the room identifier (via `referrer` header).
## Apply changes ## Installing
Then re-run the playbook: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` 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 ## Usage
You can use the self-hosted Jitsi server in multiple ways: You can use the self-hosted Jitsi server in multiple ways:
- **by adding a widget to a room via Element** (the one configured by the playbook at `https://element.DOMAIN`). Just start a voice or a video call in a room containing more than 2 members and that would create a Jitsi widget which utilizes your self-hosted Jitsi server. - **by adding a widget to a room via Element Web** (the one configured by the playbook at `https://element.example.com`). Just start a voice or a video call in a room containing more than 2 members and that would create a Jitsi widget which utilizes your self-hosted Jitsi server.
- **by adding a widget to a room via the Dimension Integration Manager**. You'll have to point the widget to your own Jitsi server manually. See our [Dimension](./configuring-playbook-dimension.md) documentation page for more details. Naturally, Dimension would need to be installed first (the playbook doesn't install it by default). - **by adding a widget to a room via the Dimension integration manager**. You'll have to point the widget to your own Jitsi server manually. See our [Dimension integration manager](./configuring-playbook-dimension.md) documentation page for more details. Naturally, Dimension would need to be installed first (the playbook doesn't install it by default).
- **directly (without any Matrix integration)**. Just go to `https://jitsi.DOMAIN` - **directly (without any Matrix integration)**. Just go to `https://jitsi.example.com`
**Note**: Element apps on mobile devices currently [don't support joining meetings on a self-hosted Jitsi server](https://github.com/element-hq/riot-web/blob/601816862f7d84ac47547891bd53effa73d32957/docs/jitsi.md#mobile-app-support). **Note**: Element apps on mobile devices currently [don't support joining meetings on a self-hosted Jitsi server](https://github.com/element-hq/riot-web/blob/601816862f7d84ac47547891bd53effa73d32957/docs/jitsi.md#mobile-app-support).
## Troubleshooting ## Troubleshooting
### Rebuilding your Jitsi installation ### Rebuilding your Jitsi installation

View File

@ -4,13 +4,13 @@ The playbook can install and configure the [matrix-synapse-ldap3](https://github
See that project's documentation to learn what it does and why it might be useful to you. See that project's documentation to learn what it does and why it might be useful to you.
If you decide that you'd like to let this playbook install it for you, you need some configuration like this: If you decide that you'd like to let this playbook install it for you, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
matrix_synapse_ext_password_provider_ldap_enabled: true matrix_synapse_ext_password_provider_ldap_enabled: true
matrix_synapse_ext_password_provider_ldap_uri: matrix_synapse_ext_password_provider_ldap_uri:
- "ldap://ldap-01.mydomain.tld:389" - "ldap://ldap-01.example.com:389"
- "ldap://ldap-02.mydomain.tld:389" - "ldap://ldap-02.example.com:389"
matrix_synapse_ext_password_provider_ldap_start_tls: true matrix_synapse_ext_password_provider_ldap_start_tls: true
matrix_synapse_ext_password_provider_ldap_base: "ou=users,dc=example,dc=com" matrix_synapse_ext_password_provider_ldap_base: "ou=users,dc=example,dc=com"
matrix_synapse_ext_password_provider_ldap_attributes_uid: "uid" matrix_synapse_ext_password_provider_ldap_attributes_uid: "uid"
@ -21,7 +21,6 @@ matrix_synapse_ext_password_provider_ldap_bind_password: ""
matrix_synapse_ext_password_provider_ldap_filter: "" matrix_synapse_ext_password_provider_ldap_filter: ""
``` ```
## Authenticating only using a password provider ## Authenticating only using a password provider
If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, feel free to disable it: If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, feel free to disable it:
@ -30,12 +29,10 @@ If you wish for users to **authenticate only against configured password provide
matrix_synapse_password_config_localdb_enabled: false matrix_synapse_password_config_localdb_enabled: false
``` ```
## Using ma1sd Identity Server for authentication ## Using ma1sd Identity Server for authentication
If you wish to use the ma1sd Identity Server for LDAP authentication instead of [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) consult [Adjusting ma1sd Identity Server configuration](configuring-playbook-ma1sd.md#authentication). If you wish to use the ma1sd Identity Server for LDAP authentication instead of [matrix-synapse-ldap3](https://github.com/matrix-org/matrix-synapse-ldap3) consult [Adjusting ma1sd Identity Server configuration](configuring-playbook-ma1sd.md#authentication).
## Handling user registration ## Handling user registration
If you wish for users to also be able to make new registrations against LDAP, you may **also** wish to [set up the ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md). If you wish for users to also be able to make new registrations against LDAP, you may **also** wish to [set up the ldap-registration-proxy](configuring-playbook-matrix-ldap-registration-proxy.md).

View File

@ -1,48 +1,67 @@
# Adjusting ma1sd Identity Server configuration (optional) # Setting up ma1sd Identity Server (optional)
The playbook can configure the [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server for you. **⚠Note**: ma1sd itself has also been unmaintained for years (the latest commit and release being from 2021). The role of identity servers in the Matrix specification also has an uncertain future. **We recommend not bothering with installing it unless it's the only way you can do what you need to do**. For example, certain things like LDAP integration can also be implemented via [the LDAP provider module for Synapse](./configuring-playbook-ldap-auth.md).
ma1sd, being an Identity Server, is not strictly needed. It is only used for 3PIDs (3rd party identifiers like E-mail and phone numbers) and some [enhanced features](https://github.com/ma1uta/ma1sd/#features). The playbook can configure the [ma1sd](https://github.com/ma1uta/ma1sd) Identity Server for you. It is a fork of [mxisd](https://github.com/kamax-io/mxisd) which was pronounced end of life 2019-06-21.
This server is private by default, potentially at the expense of user discoverability. ma1sd is used for 3PIDs (3rd party identifiers like E-mail and phone numbers) and some [enhanced features](https://github.com/ma1uta/ma1sd/#features). It is private by default, potentially at the expense of user discoverability.
*ma1sd is a fork of [mxisd](https://github.com/kamax-io/mxisd) which was pronounced end of life 2019-06-21.* See the project's [documentation](https://github.com/ma1uta/ma1sd) to learn what it does and why it might be useful to you.
**Note**: enabling ma1sd, means that the `openid` API endpoints will be exposed on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. It's something to be aware of, especially in terms of firewall whitelisting (make sure port `8448` is accessible). **Note**: enabling ma1sd, means that the `openid` API endpoints will be exposed on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. It's something to be aware of, especially in terms of firewall whitelisting (make sure port `8448` is accessible).
To enable ma1sd, use the following additional configuration in your `vars.yml` file: ## Adjusting DNS records
To make the ma1sd Identity Server enable its federation features, set up a SRV record that looks like this:
- Name: `_matrix-identity._tcp` (use this text as-is)
- Content: `10 0 443 matrix.example.com` (replace `example.com` with your own)
See [ma1sd's documentation](https://github.com/ma1uta/ma1sd/wiki/mxisd-and-your-privacy#choices-are-never-easy) for information on the privacy implications of setting up this SRV record.
**Note**: This `_matrix-identity._tcp` SRV record for the identity server is different from the `_matrix._tcp` that can be used for Synapse delegation. See [howto-server-delegation.md](howto-server-delegation.md) for more information about delegation.
## Adjusting the playbook configuration
To enable ma1sd, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_ma1sd_enabled: true matrix_ma1sd_enabled: true
``` ```
### Matrix.org lookup forwarding
## Matrix.org lookup forwarding
To ensure maximum discovery, you can make your identity server also forward lookups to the central matrix.org Identity server (at the cost of potentially leaking all your contacts information). To ensure maximum discovery, you can make your identity server also forward lookups to the central matrix.org Identity server (at the cost of potentially leaking all your contacts information).
Enabling this is discouraged and you'd better [learn more](https://github.com/ma1uta/ma1sd/blob/master/docs/features/identity.md#lookups) before proceeding. Enabling this is discouraged and you'd better [learn more](https://github.com/ma1uta/ma1sd/blob/master/docs/features/identity.md#lookups) before proceeding.
Enabling matrix.org forwarding can happen with the following configuration: To enable matrix.org forwarding, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_ma1sd_matrixorg_forwarding_enabled: true matrix_ma1sd_matrixorg_forwarding_enabled: true
``` ```
### Additional features
## Customizing email templates What this playbook configures for your is some bare minimum Identity Server functionality, so that you won't need to rely on external 3rd party services.
If you'd like to change the default email templates used by ma1sd, take a look at the `matrix_ma1sd_threepid_medium_email_custom_` variables A few variables can be toggled in this playbook to alter the ma1sd configuration that gets generated.
(in the `roles/custom/matrix-ma1sd/defaults/main.yml` file.
Still, ma1sd can do much more. You can refer to the [ma1sd website](https://github.com/ma1uta/ma1sd) for more details and configuration options.
## ma1sd-controlled Registration To use a more custom configuration, you can define a `matrix_ma1sd_configuration_extension_yaml` string variable and put your configuration in it. To learn more about how to do this, refer to the information about `matrix_ma1sd_configuration_extension_yaml` in the [default variables file](../roles/custom/matrix-ma1sd/defaults/main.yml) of the ma1sd component.
#### Customizing email templates
If you'd like to change the default email templates used by ma1sd, take a look at the `matrix_ma1sd_threepid_medium_email_custom_` variables (in the `roles/custom/matrix-ma1sd/defaults/main.yml` file.
#### ma1sd-controlled Registration
To use the [Registration](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) feature of ma1sd, you can make use of the following variables: To use the [Registration](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) feature of ma1sd, you can make use of the following variables:
- `matrix_synapse_enable_registration` - to enable user-initiated registration in Synapse - `matrix_synapse_enable_registration` - to enable user-initiated registration in Synapse
- `matrix_synapse_enable_registration_captcha` - to validate registering users using reCAPTCHA, as described in the [enabling reCAPTCHA](configuring_captcha.md) documentation. - `matrix_synapse_enable_registration_captcha` - to validate registering users using reCAPTCHA, as described in the [enabling reCAPTCHA](configuring-captcha.md) documentation.
- `matrix_synapse_registrations_require_3pid` - a list of 3pid types (among `'email'`, `'msisdn'`) required by the Synapse server for registering - `matrix_synapse_registrations_require_3pid` - a list of 3pid types (among `'email'`, `'msisdn'`) required by the Synapse server for registering
@ -50,12 +69,13 @@ To use the [Registration](https://github.com/ma1uta/ma1sd/blob/master/docs/featu
- `matrix_ma1sd_configuration_extension_yaml` - to configure ma1sd as required. See the [Registration feature's docs](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) for inspiration. Also see the [Additional features](#additional-features) section below to learn more about how to use `matrix_ma1sd_configuration_extension_yaml`. - `matrix_ma1sd_configuration_extension_yaml` - to configure ma1sd as required. See the [Registration feature's docs](https://github.com/ma1uta/ma1sd/blob/master/docs/features/registration.md) for inspiration. Also see the [Additional features](#additional-features) section below to learn more about how to use `matrix_ma1sd_configuration_extension_yaml`.
**Note**: For this to work, either the homeserver needs to [federate](configuring-playbook-federation.md) or the `openid` APIs need to exposed on the federation port. When federation is disabled and ma1sd is enabled, we automatically expose the `openid` APIs (only!) on the federation port. Make sure the federation port (usually `https://matrix.DOMAIN:8448`) is whitelisted in your firewall (even if you don't actually use/need federation). **Note**: For this to work, either the homeserver needs to [federate](configuring-playbook-federation.md) or the `openid` APIs need to exposed on the federation port. When federation is disabled and ma1sd is enabled, we automatically expose the `openid` APIs (only!) on the federation port. Make sure the federation port (usually `https://matrix.example.com:8448`) is whitelisted in your firewall (even if you don't actually use/need federation).
#### Authentication
## Authentication [Authentication](https://github.com/ma1uta/ma1sd/blob/master/docs/features/authentication.md) provides the possibility to use your own [Identity Stores](https://github.com/ma1uta/ma1sd/blob/master/docs/stores/README.md) (for example LDAP) to authenticate users on your Homeserver.
[Authentication](https://github.com/ma1uta/ma1sd/blob/master/docs/features/authentication.md) provides the possibility to use your own [Identity Stores](https://github.com/ma1uta/ma1sd/blob/master/docs/stores/README.md) (for example LDAP) to authenticate users on your Homeserver. The following configuration can be used to authenticate against an LDAP server: To enable authentication against an LDAP server, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_synapse_ext_password_provider_rest_auth_enabled: true matrix_synapse_ext_password_provider_rest_auth_enabled: true
@ -75,20 +95,7 @@ matrix_ma1sd_configuration_extension_yaml: |
bindPassword: TheUserPassword bindPassword: TheUserPassword
``` ```
## Additional features #### Example: SMS verification
What this playbook configures for your is some bare minimum Identity Server functionality, so that you won't need to rely on external 3rd party services.
A few variables can be toggled in this playbook to alter the ma1sd configuration that gets generated.
Still, ma1sd can do much more.
You can refer to the [ma1sd website](https://github.com/ma1uta/ma1sd) for more details and configuration options.
To use a more custom configuration, you can define a `matrix_ma1sd_configuration_extension_yaml` string variable
and put your configuration in it.
To learn more about how to do this, refer to the information about `matrix_ma1sd_configuration_extension_yaml` in the [default variables file](../roles/custom/matrix-ma1sd/defaults/main.yml) of the ma1sd component.
## Example: SMS verification
If your use case requires mobile verification, it is quite simple to integrate ma1sd with [Twilio](https://www.twilio.com/), an online telephony services gateway. Their prices are reasonable for low-volume projects and integration can be done with the following configuration: If your use case requires mobile verification, it is quite simple to integrate ma1sd with [Twilio](https://www.twilio.com/), an online telephony services gateway. Their prices are reasonable for low-volume projects and integration can be done with the following configuration:
@ -104,7 +111,7 @@ matrix_ma1sd_configuration_extension_yaml: |
number: '+<msisdn-number>' number: '+<msisdn-number>'
``` ```
## Example: Open Registration for every Domain #### Example: Open Registration for every Domain
If you want to open registration for any domain, you have to setup the allowed domains with ma1sd's `blacklist` and `whitelist`. The default behavior when neither the `blacklist`, nor the `whitelist` match, is to allow registration. Beware: you can't block toplevel domains (aka `.xy`) because the internal architecture of ma1sd doesn't allow that. If you want to open registration for any domain, you have to setup the allowed domains with ma1sd's `blacklist` and `whitelist`. The default behavior when neither the `blacklist`, nor the `whitelist` match, is to allow registration. Beware: you can't block toplevel domains (aka `.xy`) because the internal architecture of ma1sd doesn't allow that.
@ -120,13 +127,26 @@ matrix_ma1sd_configuration_extension_yaml: |
whitelist: ~ whitelist: ~
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
## Troubleshooting ## Troubleshooting
If email address validation emails sent by ma1sd are not reaching you, you should look into [Adjusting email-sending settings](configuring-playbook-email.md). If email address validation emails sent by ma1sd are not reaching you, you should look into [Adjusting email-sending settings](configuring-playbook-email.md).
If you'd like additional logging information, temporarily enable verbose logging for ma1sd. If you'd like additional logging information, temporarily enable verbose logging for ma1sd.
Example configuration (`inventory/host_vars/matrix.DOMAIN/vars.yml`): To enable it, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_ma1sd_verbose_logging: true matrix_ma1sd_verbose_logging: true

View File

@ -0,0 +1,457 @@
# Setting up Matrix Authentication Service (optional)
This playbook can install and configure [Matrix Authentication Service](https://github.com/element-hq/matrix-authentication-service/) (MAS) - a service operating alongside your existing [Synapse](./configuring-playbook-synapse.md) homeserver and providing [better authentication, session management and permissions in Matrix](https://matrix.org/blog/2023/09/better-auth/).
Matrix Authentication Service is an implementation of [MSC3861: Next-generation auth for Matrix, based on OAuth 2.0/OIDC](https://github.com/matrix-org/matrix-spec-proposals/pull/3861) and still work in progress, tracked at the [areweoidcyet.com](https://areweoidcyet.com/) website.
**Before going through with starting to use Matrix Authentication Service**, make sure to read:
- the [Reasons to use Matrix Authentication Service](#reasons-to-use-matrix-authentication-service) section below
- the [Expectations](#expectations) section below
- the [FAQ section on areweoidcyet.com](https://areweoidcyet.com/#faqs)
**If you've already been using Synapse** and have user accounts in its database, you can [migrate to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service).
## Reasons to use Matrix Authentication Service
You may be wondering whether you should make the switch to Matrix Authentication Service (MAS) or keep using your existing authentication flow via Synapse (password-based or [OIDC](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on)-enabled).
Matrix Authentication Service is **still an experimental service** and **not a default** for this Ansible playbook.
The [Expectations](#expectations) section contains a list of what works and what doesn't (**some services don't work with MAS yet**), as well as the **relative irreversability** of the migration process.
Below, we'll try to **highlight some potential reasons for switching** to Matrix Authentication Service:
- To use SSO in [Element X](https://element.io/blog/element-x-ignition/). The old [Synapse OIDC](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on) login flow is only supported in old Element clients and will not be supported in Element X. Element X will only support the new SSO-based login flow provided by MAS, so if you want to use SSO with Element X, you will need to switch to MAS.
- To help drive adoption of the "Next-generation auth for Matrix" by switching to what's ultimately coming anyway
- To help discover (and potentially fix) MAS integration issues with this Ansible playbook
- To help discover (and potentially fix) MAS integration issues with various other Matrix components (bridges, bots, clients, etc.)
- To reap some of the security benefits that Matrix Authentication Service offers, as outlined in the [Better authentication, session management and permissions in Matrix](https://matrix.org/blog/2023/09/better-auth/) article.
## Prerequisites
- ⚠️ the [Synapse](configuring-playbook-synapse.md) homeserver implementation (which is the default for this playbook). Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating wtih Matrix Authentication Service yet.
- ⚠️ **email sending** configured (see [Adjusting email-sending settings](./configuring-playbook-email.md)), because **Matrix Authentication Service [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user** going through the new SSO-based login flow. It's also possible to [work around email deliverability issues](#working-around-email-deliverability-issues) if your email configuration is not working.
- ❌ **disabling all password providers** for Synapse (things like [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc.) More details about this are available in the [Expectations](#expectations) section below.
## Expectations
This section details what you can expect when switching to the Matrix Authentication Service (MAS).
- ❌ **Synapse password providers will need to be disabled**. You can no longer use [shared-secret-auth](./configuring-playbook-shared-secret-auth.md), [rest-auth](./configuring-playbook-rest-auth.md), [LDAP auth](./configuring-playbook-ldap-auth.md), etc. When the authentication flow is handled by MAS (not by Synapse anymore), it doesn't make sense to extend the Synapse authentication flow with additional modules. Many bridges used to rely on shared-secret-auth for doing double-puppeting (impersonating other users), but most (at least the mautrix bridges) nowadays use [Appservice Double Puppet](./configuring-playbook-appservice-double-puppet.md) as a better alternative. Older/maintained bridges may still rely on shared-secret-auth, as do other services like [matrix-corporal](./configuring-playbook-matrix-corporal.md).
- ❌ Certain **tools like [synapse-admin](./configuring-playbook-synapse-admin.md) do not have full compatibility with MAS yet**. synapse-admin already supports [login with access token](https://github.com/etkecc/synapse-admin/pull/58), browsing users (which Synapse will internally fetch from MAS) and updating user avatars. However, editing users (passwords, etc.) now needs to happen directly against MAS using the [MAS Admin API](https://element-hq.github.io/matrix-authentication-service/api/index.html), which synapse-admin cannot interact with yet.
- ❌ **Some services experience issues when authenticating via MAS**:
- [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"
- [matrix-reminder-bot](./configuring-playbook-bot-matrix-reminder-bot.md) fails to start (see [element-hq/matrix-authentication-service#3439](https://github.com/element-hq/matrix-authentication-service/issues/3439))
- Other services may be similarly affected. This list is not exhaustive.
- ❌ **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).
- ⚠️ **You will need to have email sending configured** (see [Adjusting email-sending settings](./configuring-playbook-email.md)), because **Matrix Authentication Service [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user** going through the new SSO-based login flow. It's also possible to [work around email deliverability issues](#working-around-email-deliverability-issues) if your email configuration is not working.
- ⚠️ [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) does not currently seem to preserve the "admin" flag for users (as found in the Synapse database). All users are imported as non-admin - see [element-hq/matrix-authentication-service#3440](https://github.com/element-hq/matrix-authentication-service/issues/3440). You may need update the Matrix Authentication Service's database manually and adjust the `can_request_admin` column in the `users` table to `true` for users that need to be administrators (e.g. `UPDATE users SET can_request_admin = true WHERE username = 'someone';`)
- ⚠️ Delegating user authentication to MAS causes **your Synapse server to be completely dependant on one more service** for its operations. MAS is quick & lightweight and should be stable enough already, but this is something to keep in mind when making the switch.
- ⚠️ If you've got [OIDC configured in Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on), you will need to migrate your OIDC configuration to MAS by adding an [Upstream OAuth2 configuration](#upstream-oauth2-configuration).
- ⚠️ A [compatibility layer](https://element-hq.github.io/matrix-authentication-service/setup/homeserver.html#set-up-the-compatibility-layer) is installed - all `/_matrix/client/*/login` (etc.) requests will be routed to MAS instead of going to the homeserver. This is done both publicly (e.g. `https://matrix.example.com/_matrix/client/*/login`) and on the internal Traefik entrypoint (e.g. `https://matrix-traefik:8008/_matrix/client/*/login`) which helps addon services reach the homeserver's Client-Server API. You typically don't need to do anything to make this work, but it's good to be aware of it, especially if you have a [custom webserver setup](./configuring-playbook-own-webserver.md).
- ✅ Your **existing login sessions will continue to work** (you won't get logged out). Migration will require a bit of manual work and minutes of downtime, but it's not too bad.
- ✅ Various clients ([Cinny](./configuring-playbook-client-cinny.md), [Element Web](./configuring-playbook-client-element-web.md), Element X, FluffyChat) will be able to use the **new SSO-based login flow** provided by Matrix Authentication Service
- ✅ The **old login flow** (called `m.login.password`) **will still continue to work**, so clients (old Element Web, etc.) and bridges/bots that don't support the new OIDC-based login flow will still work. Going through the old login flow does not require users to have a verified email address, as [is the case](https://github.com/element-hq/matrix-authentication-service/issues/1505) for the new SSO-based login flow.
- ✅ [Registering users](./registering-users.md) via **the playbook's `register-user` tag remains unchanged**. The playbook automatically does the right thing regardless of homeserver implementation (Synapse, Dendrite, etc.) and whether MAS is enabled or not. When MAS is enabled, the playbook will forward user-registration requests to MAS. Registering users via the command-line is no longer done via the `/matrix/synapse/bin/register` script, but via `/matrix/matrix-authentication-service/bin/register-user`.
- ✅ Users that are prepared by the playbook (for bots, bridges, etc.) will continue to be registered automatically as expected. The playbook automatically does the right thing regardless of homeserver implementation (Synapse, Dendrite, etc.) and whether MAS is enabled or not. When MAS is enabled, the playbook will forward user-registration requests to MAS.
## Installation flows
### New homeserver
For new homeservers (which don't have any users in their Synapse database yet), follow the [Adjusting the playbook configuration](#adjusting-the-playbook-configuration) instructions and then proceed with [Installing](#installing).
### Existing homeserver
Other homeserver implementations ([Dendrite](./configuring-playbook-dendrite.md), [Conduit](./configuring-playbook-conduit.md), etc.) do not support integrating wtih Matrix Authentication Service yet.
For existing Synapse homeservers:
- when following the [Adjusting the playbook configuration](#adjusting-the-playbook-configuration) instructions, make sure to **disable the integration between Synapse and MAS** by **uncommenting** the `matrix_authentication_service_migration_in_progress: true` line as described in the [Marking an existing homeserver for migration](#marking-an-existing-homeserver-for-migration) section below.
- then follow the [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) instructions to perform the installation and migration
## Adjusting the playbook configuration
To enable Matrix Authentication Service, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_authentication_service_enabled: true
# Generate this encryption secret with: `openssl rand -hex 32`
matrix_authentication_service_config_secrets_encryption: ''
# When migrating an existing homeserver to Matrix Authentication Service, uncomment the line below.
# Learn more about the migration process in the "Marking an existing homeserver for migration" section below.
# For brand-new installations which start directly on MAS, this line can be removed.
# matrix_authentication_service_migration_in_progress: true
```
In the sub-sections that follow, we'll cover some additional configuration options that you may wish to adjust.
There are many other configuration options available. Consult the [`defaults/main.yml` file](../roles/custom/matrix-authentication-service/defaults/main.yml) in the [matrix-authentication-service role](../roles/custom/matrix-authentication-service/) to discover them.
### Adjusting the Matrix Authentication Service URL
By default, this playbook installs the Matrix Authentication Service on the `matrix.` subdomain, at the `/auth` path (https://matrix.example.com/auth). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
By tweaking the `matrix_authentication_service_hostname` and `matrix_authentication_service_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname and path prefix
matrix_authentication_service_hostname: auth.example.com
matrix_authentication_service_path_prefix: /
```
### Marking an existing homeserver for migration
The [configuration above](#adjusting-the-playbook-configuration) instructs existing users wishing to migrate to add `matrix_authentication_service_migration_in_progress: true` to their configuration.
This is done temporarily. The migration steps are described in more detail in the [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) section below.
### Upstream OAuth2 configuration
To make Matrix Authentication Service delegate to an existing upstream OAuth 2.0/OIDC provider, you can use its [`upstream_oauth2.providers` setting](https://element-hq.github.io/matrix-authentication-service/reference/configuration.html#upstream_oauth2providers).
The playbook exposes a `matrix_authentication_service_config_upstream_oauth2_providers` variable for controlling this setting.
<details>
<summary>Click to expand the example configuration:</summary>
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
matrix_authentication_service_config_upstream_oauth2_providers:
- # A unique identifier for the provider
# Must be a valid ULID
id: 01HFVBY12TMNTYTBV8W921M5FA
# The issuer URL, which will be used to discover the provider's configuration.
# If discovery is enabled, this *must* exactly match the `issuer` field
# advertised in `<issuer>/.well-known/openid-configuration`.
issuer: https://example.com/
# A human-readable name for the provider,
# which will be displayed on the login page
#human_name: Example
# A brand identifier for the provider, which will be used to display a logo
# on the login page. Values supported by the default template are:
# - `apple`
# - `google`
# - `facebook`
# - `github`
# - `gitlab`
# - `twitter`
#brand_name: google
# The client ID to use to authenticate to the provider
client_id: mas-fb3f0c09c4c23de4
# The client secret to use to authenticate to the provider
# This is only used by the `client_secret_post`, `client_secret_basic`
# and `client_secret_jwk` authentication methods
#client_secret: f4f6bb68a0269264877e9cb23b1856ab
# Which authentication method to use to authenticate to the provider
# Supported methods are:
# - `none`
# - `client_secret_basic`
# - `client_secret_post`
# - `client_secret_jwt`
# - `private_key_jwt` (using the keys defined in the `secrets.keys` section)
token_endpoint_auth_method: client_secret_post
# Which signing algorithm to use to sign the authentication request when using
# the `private_key_jwt` or the `client_secret_jwt` authentication methods
#token_endpoint_auth_signing_alg: RS256
# The scopes to request from the provider
# In most cases, it should always include `openid` scope
scope: "openid email profile"
# How the provider configuration and endpoints should be discovered
# Possible values are:
# - `oidc`: discover the provider through OIDC discovery,
# with strict metadata validation (default)
# - `insecure`: discover through OIDC discovery, but skip metadata validation
# - `disabled`: don't discover the provider and use the endpoints below
#discovery_mode: oidc
# Whether PKCE should be used during the authorization code flow.
# Possible values are:
# - `auto`: use PKCE if the provider supports it (default)
# Determined through discovery, and disabled if discovery is disabled
# - `always`: always use PKCE (with the S256 method)
# - `never`: never use PKCE
#pkce_method: auto
# The provider authorization endpoint
# This takes precedence over the discovery mechanism
#authorization_endpoint: https://example.com/oauth2/authorize
# The provider token endpoint
# This takes precedence over the discovery mechanism
#token_endpoint: https://example.com/oauth2/token
# The provider JWKS URI
# This takes precedence over the discovery mechanism
#jwks_uri: https://example.com/oauth2/keys
# How user attributes should be mapped
#
# Most of those attributes have two main properties:
# - `action`: what to do with the attribute. Possible values are:
# - `ignore`: ignore the attribute
# - `suggest`: suggest the attribute to the user, but let them opt out
# - `force`: always import the attribute, and don't fail if it's missing
# - `require`: always import the attribute, and fail if it's missing
# - `template`: a Jinja2 template used to generate the value. In this template,
# the `user` variable is available, which contains the user's attributes
# retrieved from the `id_token` given by the upstream provider.
#
# Each attribute has a default template which follows the well-known OIDC claims.
#
claims_imports:
# The subject is an internal identifier used to link the
# user's provider identity to local accounts.
# By default it uses the `sub` claim as per the OIDC spec,
# which should fit most use cases.
subject:
#template: "{% raw %}{{ user.sub }}{% endraw %}"
# The localpart is the local part of the user's Matrix ID.
# For example, on the `example.com` server, if the localpart is `alice`,
# the user's Matrix ID will be `@alice:example.com`.
localpart:
#action: force
#template: "{% raw %}{{ user.preferred_username }}{% endraw %}"
# The display name is the user's display name.
displayname:
#action: suggest
#template: "{% raw %}{{ user.name }}{% endraw %}"
# An email address to import.
email:
#action: suggest
#template: "{% raw %}{{ user.email }}{% endraw %}"
# Whether the email address must be marked as verified.
# Possible values are:
# - `import`: mark the email address as verified if the upstream provider
# has marked it as verified, using the `email_verified` claim.
# This is the default.
# - `always`: mark the email address as verified
# - `never`: mark the email address as not verified
#set_email_verification: import
```
</details>
💡 Refer to the [`upstream_oauth2.providers` setting](https://element-hq.github.io/matrix-authentication-service/reference/configuration.html#upstream_oauth2providers) for the most up-to-date schema and example for providers. The value shown above here may be out of date.
⚠️ The syntax for existing [OIDC providers configured in Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on) is slightly different, so you will need to adjust your configuration when switching from Synapse OIDC to MAS upstream OAuth2.
⚠️ When [migrating an existing homeserver](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) which contains OIDC-sourced users, you will need to:
- [Configure upstream OIDC provider mapping for syn2mas](#configuring-upstream-oidc-provider-mapping-for-syn2mas)
- go through the [migrating an existing homeserver](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) process
- remove all Synapse OIDC-related configuration (`matrix_synapse_oidc_*`) to prevent it being in conflict with the MAS OIDC configuration
## Adjusting DNS records
If you've changed the default hostname, **you may need to adjust your DNS** records to point the Matrix Authentication Service domain to the Matrix server.
See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to use the default hostname, you won't need to do any extra DNS configuration.
## Installing
Now that you've [adjusted the playbook configuration](#adjusting-the-playbook-configuration) and [your DNS records](#adjusting-dns-records), you can 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
```
**Notes**:
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
- If you're in the process of migrating an existing Synapse homeserver to MAS, you should now follow the rest of the steps in the [Migrating an existing Synapse homeserver to Matrix Authentication Service](#migrating-an-existing-synapse-homeserver-to-matrix-authentication-service) guide.
💡 After installation, you should [verify that Matrix Authentication Service is installed correctly](#verify-that-matrix-authentication-service-is-installed-correctly).
## Migrating an existing Synapse homeserver to Matrix Authentication Service
Our migration guide is loosely based on the upstream [Migrating an existing homeserver](https://element-hq.github.io/matrix-authentication-service/setup/migration.html) guide.
Migration is done via a tool called `syn2mas`, which the playbook could run for you (in a container).
The installation + migration steps are like this:
1. [Adjust your configuration](#adjusting-the-playbook-configuration) to **disable the integration between the homeserver and MAS**. This is done by **uncommenting** the `matrix_authentication_service_migration_in_progress: true` line.
2. Perform the initial [installation](#installing). At this point:
- Matrix Authentication Service will be installed. Its database will be empty, so it cannot validate existing access tokens or authentication users yet.
- The homeserver will still continue to use its local database for validating existing access tokens.
- Various [compatibility layer URLs](https://element-hq.github.io/matrix-authentication-service/setup/homeserver.html#set-up-the-compatibility-layer) are not yet installed. New login sessions will still be forwarded to the homeserver, which is capable of completing them.
- The `matrix-user-creator` role would be suppressed, so that it doesn't automatically attempt to create users (for bots, etc.) in the MAS database. These user accounts likely already exist in Synapse's user database and could be migrated over (via syn2mas, as per the steps below), so creating them in the MAS database would have been unnecessary and potentially problematic (conflicts during the syn2mas migration).
3. Consider taking a full [backup of your Postgres database](./maintenance-postgres.md#backing-up-postgresql). This is done just in case. The **syn2mas migration tool does not delete any data**, so it should be possible to revert to your previous setup by merely disabling MAS and re-running the playbook (no need to restore a Postgres backup). However, do note that 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.
4. [Migrate your data from Synapse to Matrix Authentication Service using syn2mas](#migrate-your-data-from-synapse-to-matrix-authentication-service-using-syn2mas)
5. [Adjust your configuration](#adjusting-the-playbook-configuration) again, to:
- remove the `matrix_authentication_service_migration_in_progress: false` line
- if you had been using [OIDC providers configured in Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on), remove all Synapse OIDC-related configuration (`matrix_synapse_oidc_*`) to prevent it being in conflict with the MAS OIDC configuration
5. Perform the [installation](#installing) again. At this point:
- The homeserver will start delegating authentication to MAS.
- The compatibility layer URLs will be installed. New login sessions will be completed by MAS.
6. [Verify that Matrix Authentication Service is installed correctly](#verify-that-matrix-authentication-service-is-installed-correctly)
### Migrate your data from Synapse to Matrix Authentication Service using syn2mas
We **don't** ask you to [run the `syn2mas` migration advisor command](https://element-hq.github.io/matrix-authentication-service/setup/migration.html#run-the-migration-advisor), because it only gives you the green light if your Synapse configuration (`homeserver.yaml`) is configured in a way that's compatible with MAS (delegating authentication to MAS; disabling Synapse's password config; etc.). Until we migrate your data with the `syn2mas` tool, we intentionally avoid doing these changes to allow existing user sessions to work.
You can invoke the `syn2mas` tool via the playbook by running the playbook's `matrix-authentication-service-syn2mas` tag. We recommend first doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration).
#### Configuring syn2mas
If you're using [OIDC with Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on), you will need to [Configuring upstream OIDC provider mapping for syn2mas](#configuring-upstream-oidc-provider-mapping-for-syn2mas).
If you only have local (non-OIDC) users in your Synapse database, you can likely run `syn2mas` as-is (without doing additional configuration changes).
When you're done with potentially configuring `syn2mas`, proceed to doing a [dry-run](#performing-a-syn2mas-dry-run) and then a [real migration](#performing-a-real-syn2mas-migration).
##### Configuring upstream OIDC provider mapping for syn2mas
If you have existing OIDC users in your Synapse user database (which will be the case if when using [OIDC with Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on)), you may need to pass an additional `--upstreamProviderMapping` argument to the `syn2mas` tool to tell it which provider (on the Synapse side) maps to which other provider on the MAS side.
If you don't do this, `syn2mas` would report errors like this one:
> [FATAL] migrate - [Failed to import external id 4264b0f0-4f11-4ddd-aedb-b500e4d07c25 with oidc-keycloak for user @user:example.com: Error: Unknown upstream provider oidc-keycloak]
Below is an example situation and a guide for how to solve it.
If in `matrix_synapse_oidc_providers` your provider `idp_id` is (was) named `keycloak`, in the Synapse database users would be associated with the `oidc-keycloak` provider (note the `oidc-` prefix that was added automatically by Synapse to your `idp_id` value).
The same OIDC provider may have an `id` of `01HFVBY12TMNTYTBV8W921M5FA` on the MAS side, as defined in `matrix_authentication_service_config_upstream_oauth2_providers` (see the [Upstream OAuth2 configuration](#upstream-oauth2-configuration) section above).
To tell `syn2mas` how the Synapse-configured OIDC provider maps to the new MAS-configured OIDC provider, add this additional configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Adjust the mapping below to match your provider IDs on the Synapse side and the MAS side.
# Don't forget that Synapse automatically adds an `oidc-` prefix to provider ids defined in its configuration.
matrix_authentication_service_syn2mas_process_extra_arguments:
- "--upstreamProviderMapping oidc-keycloak:01HFVBY12TMNTYTBV8W921M5FA"
```
#### Performing a syn2mas dry-run
Having [configured syn2mas](#configuring-syn2mas), we recommend doing a [dry-run](https://en.wikipedia.org/wiki/Dry_run_(testing)) first to verify that everything will work out as expected.
A dry-run would not cause downtime, because it avoids stopping Synapse.
To perform a dry-run, run:
```sh
just run-tags matrix-authentication-service-syn2mas -e matrix_authentication_service_syn2mas_dry_run=true
```
Observe the command output (especially the last line of the the syn2mas output). If you are confident that the migration will work out as expected, you can proceed with a [real migration](#performing-a-real-syn2mas-migration).
#### Performing a real syn2mas migration
Before performing a real migration make sure:
- you've familiarized yourself with the [expectations](#expectations)
- you've performed a Postgres backup, just in case
- you're aware of the irreversibility of the migration process without disruption after users have created new login sessions via the new MAS setup
- you've [configured syn2mas](#configuring-syn2mas), especially if you've used [OIDC with Synapse](./configuring-playbook-synapse.md#synapse--openid-connect-for-single-sign-on)
- you've performed a [syn2mas dry-run](#performing-a-syn2mas-dry-run) and don't see any issues in its output
To perform a real migration, run the `matrix-authentication-service-syn2mas` tag **without** the `matrix_authentication_service_syn2mas_dry_run` variable:
```sh
just run-tags matrix-authentication-service-syn2mas
```
Having performed a `syn2mas` migration once, trying to do it again will report errors for users that were already migrated (e.g. "Error: Unknown upstream provider oauth-delegated").
## Verify that Matrix Authentication Service is installed correctly
After [installation](#installing), run the `doctor` subcommand of the [`mas-cli` command-line tool](https://element-hq.github.io/matrix-authentication-service/reference/cli/index.html) to verify that MAS is installed correctly.
You can do it:
- either via the Ansible playbook's `matrix-authentication-service-mas-cli-doctor` tag: `just run-tags matrix-authentication-service-mas-cli-doctor`
- or by running the `mas-cli` script on the server (which invokes the `mas-cli` tool inside a container): `/matrix/matrix-authentication-service/bin/mas-cli doctor`
If successful, you should see some output that looks like this:
```
💡 Running diagnostics, make sure that both MAS and Synapse are running, and that MAS is using the same configuration files as this tool.
✅ Matrix client well-known at "https://example.com/.well-known/matrix/client" is valid
✅ Homeserver is reachable at "http://matrix-synapse:8008/_matrix/client/versions"
✅ Homeserver at "http://matrix-synapse:8008/_matrix/client/v3/account/whoami" is reachable, and it correctly rejected an invalid token.
✅ The Synapse admin API is reachable at "http://matrix-synapse:8008/_synapse/admin/v1/server_version".
✅ The Synapse admin API is reachable with authentication at "http://matrix-synapse:8008/_synapse/admin/v1/background_updates/status".
✅ The legacy login API at "https://matrix.example.com/_matrix/client/v3/login" is reachable and is handled by MAS.
```
## Management
You can use the [`mas-cli` command-line tool](https://element-hq.github.io/matrix-authentication-service/reference/cli/index.html) (exposed via the `/matrix/matrix-authentication-service/bin/mas-cli` script) to perform administrative tasks against MAS.
This documentation page already mentions:
- the `mas-cli doctor` sub-command in the [Verify that Matrix Authentication Service is installed correctly](#verify-that-matrix-authentication-service-is-installed-correctly) section, which you can run via the CLI and via the Ansible playbook's `matrix-authentication-service-mas-cli-doctor` tag
- the `mas-cli manage register-user` sub-command in the [Registering users](./registering-users.md) documentation
There are other sub-commands available. Run `/matrix/matrix-authentication-service/bin/mas-cli` to get an overview.
## User registration
After Matrix Authentication Service is [installed](#installing), users need to be managed there (unless you're managing them in an [upstream OAuth2 provider](#upstream-oauth2-configuration)).
You can register users new users as described in the [Registering users](./registering-users.md) documentation (via `mas-cli manage register-user` or the Ansible playbook's `register-user` tag).
## Working around email deliverability issues
Because Matrix Authentication Service [still insists](https://github.com/element-hq/matrix-authentication-service/issues/1505) on having a verified email address for each user, you may need to work around email deliverability issues if [your email-sending configuration](./configuring-playbook-email.md) is not working.
Matrix Authentication Service attempts to verify email addresses by sending a verification email to the address specified by the user whenever they log in to an account without a verified email address.
If email delivery is not working, **you can retrieve the email configuration code from the Matrix Authentication Service's logs** (`journalctl -fu matrix-authentication-service`).
Alternatively, you can use the [`mas-cli` management tool](#management) to manually verify email addresses for users. Example: `/matrix/matrix-authentication-service/bin/mas-cli manage verify-email some.username email@example.com`

View File

@ -8,17 +8,15 @@
The playbook can install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you. The playbook can install and configure [matrix-corporal](https://github.com/devture/matrix-corporal) for you.
In short, it's a sort of automation and firewalling service, which is helpful if you're instaling Matrix services in a controlled corporate environment. In short, it's a sort of automation and firewalling service, which is helpful if you're instaling Matrix services in a controlled corporate environment. See that project's documentation to learn what it does and why it might be useful to you.
See that project's documentation to learn what it does and why it might be useful to you.
If you decide that you'd like to let this playbook install it for you, you'd need to also: If you decide that you'd like to let this playbook install it for you, you'd need to also:
- (required) [set up the Shared Secret Auth password provider module](configuring-playbook-shared-secret-auth.md) - (required) [set up the Shared Secret Auth password provider module](configuring-playbook-shared-secret-auth.md)
- (optional, but encouraged) [set up the REST authentication password provider module](configuring-playbook-rest-auth.md) - (optional, but encouraged) [set up the REST authentication password provider module](configuring-playbook-rest-auth.md)
## Adjusting the playbook configuration
## Playbook configuration Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
You would then need some configuration like this:
```yaml ```yaml
# The Shared Secret Auth password provider module is required for Corporal to work. # The Shared Secret Auth password provider module is required for Corporal to work.
@ -52,7 +50,7 @@ matrix_corporal_policy_provider_config: |
matrix_corporal_http_api_enabled: true matrix_corporal_http_api_enabled: true
matrix_corporal_http_api_auth_token: "AUTH_TOKEN_HERE" matrix_corporal_http_api_auth_token: "AUTH_TOKEN_HERE"
# If you need to change matrix-corporal's user id from the default (matrix-corporal). # If you need to change matrix-corporal's user ID from the default (matrix-corporal).
# In any case, you need to make sure this Matrix user is created on your server. # In any case, you need to make sure this Matrix user is created on your server.
matrix_corporal_corporal_user_id_local_part: "matrix-corporal" matrix_corporal_corporal_user_id_local_part: "matrix-corporal"
@ -71,9 +69,9 @@ matrix_synapse_rc_login:
burst_count: 3 burst_count: 3
``` ```
Matrix Corporal operates with a specific Matrix user on your server. Matrix Corporal operates with a specific Matrix user on your server. By default, it's `matrix-corporal` (controllable by the `matrix_corporal_reconciliation_user_id_local_part` setting, see above).
By default, it's `matrix-corporal` (controllable by the `matrix_corporal_reconciliation_user_id_local_part` setting, see above).
No matter what Matrix user id you configure to run it with, make sure that: No matter what Matrix user ID you configure to run it with, make sure that:
- the Matrix Corporal user is created by [registering it](registering-users.md) **with administrator privileges**. Use a password you remember, as you'll need to log in from time to time to create or join rooms - the Matrix Corporal user is created by [registering it](registering-users.md) **with administrator privileges**. Use a password you remember, as you'll need to log in from time to time to create or join rooms
@ -115,8 +113,18 @@ aux_file_definitions:
To learn more about what the policy configuration, see the matrix-corporal documentation on [policy](https://github.com/devture/matrix-corporal/blob/master/docs/policy.md). To learn more about what the policy configuration, see the matrix-corporal documentation on [policy](https://github.com/devture/matrix-corporal/blob/master/docs/policy.md).
Each time you update the policy in your `vars.yml` file, you'd need to re-run the playbook and restart matrix-corporal (`--tags=setup-all,start` or `--tags=setup-aux-files,setup-corporal,start`). ## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just run-tags setup-aux-files,setup-corporal,start` or `just setup-all`
`just run-tags setup-aux-files,setup-corporal,start` is useful for maintaining your setup quickly when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note `just setup-all` runs the `ensure-matrix-users-created` tag too.
## Matrix Corporal files ## Matrix Corporal files

View File

@ -4,12 +4,11 @@ The playbook can install and configure [matrix-ldap-registration-proxy](https://
This proxy handles Matrix registration requests and forwards them to LDAP. This proxy handles Matrix registration requests and forwards them to LDAP.
**Please note:** This does support the full Matrix specification for registrations. It only provide a very coarse **Note**: This does support the full Matrix specification for registrations. It only provide a very coarse implementation of a basic password registration.
implementation of a basic password registration.
## Quickstart ## Quickstart
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file: Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_ldap_registration_proxy_enabled: true matrix_ldap_registration_proxy_enabled: true
@ -20,8 +19,7 @@ matrix_ldap_registration_proxy_ldap_user: <USER>
matrix_ldap_registration_proxy_ldap_password: <password> matrix_ldap_registration_proxy_ldap_password: <password>
``` ```
If you already use the [synapse external password provider via LDAP](configuring-playbook-ldap-auth.md) (that is, you have `matrix_synapse_ext_password_provider_ldap_enabled: true` and other options in your configuration) If you already use the [synapse external password provider via LDAP](configuring-playbook-ldap-auth.md) (that is, you have `matrix_synapse_ext_password_provider_ldap_enabled: true` and other options in your configuration) you can use the following values as configuration:
you can use the following values as configuration:
```yaml ```yaml
# Use the LDAP values specified for the synapse role to setup LDAP proxy # Use the LDAP values specified for the synapse role to setup LDAP proxy
@ -34,3 +32,15 @@ matrix_ldap_registration_proxy_systemd_wanted_services_list_custom:
- matrix-synapse.service - matrix-synapse.service
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.

View File

@ -1,4 +1,4 @@
# Setting up matrix-media-repo (optional) # Storing Matrix media files using matrix-media-repo (optional)
[matrix-media-repo](https://docs.t2bot.io/matrix-media-repo/) (often abbreviated "MMR") is a highly customizable multi-domain media repository for Matrix. Intended for medium to large environments consisting of several homeservers, this media repo de-duplicates media (including remote media) while being fully compliant with the specification. [matrix-media-repo](https://docs.t2bot.io/matrix-media-repo/) (often abbreviated "MMR") is a highly customizable multi-domain media repository for Matrix. Intended for medium to large environments consisting of several homeservers, this media repo de-duplicates media (including remote media) while being fully compliant with the specification.
@ -14,7 +14,7 @@ For a simpler alternative (which allows you to offload your media repository sto
## Quickstart ## Quickstart
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file and [re-run the installation process](./installing.md) for the playbook: Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file and [re-run the installation process](./installing.md) for the playbook:
```yaml ```yaml
matrix_media_repo_enabled: true matrix_media_repo_enabled: true
@ -30,6 +30,7 @@ By default, the media-repo will use the local filesystem for data storage. You c
## Configuring the media-repo ## Configuring the media-repo
Additional common configuration options: Additional common configuration options:
```yaml ```yaml
# The postgres database pooling options # The postgres database pooling options
@ -105,7 +106,7 @@ If you wish to manually generate the signing key and merge it with your homeserv
### Key backup and revoking ### Key backup and revoking
Since your homeserver signing key file is modified by the playbook, a backup will be created in `HOMESERVER_DIR/config/DOMAIN.signing.key.backup`. If you need to remove/revoke old keys, you can restore from this backup or remove the MMR key id from your `DOMAIN.signing.key` file. Since your homeserver signing key file is modified by the playbook, a backup will be created in `HOMESERVER_DIR/config/example.com.signing.key.backup`. If you need to remove/revoke old keys, you can restore from this backup or remove the MMR key ID from your `example.com.signing.key` file.
Additionally, its recommended after revoking a signing key to update your homeserver config file (`old_signing_keys` field for Synapse and `old_private_keys` for Dendrite). See your homeserver config file for further documentation on how to populate the field. Additionally, its recommended after revoking a signing key to update your homeserver config file (`old_signing_keys` field for Synapse and `old_private_keys` for Dendrite). See your homeserver config file for further documentation on how to populate the field.
@ -123,7 +124,7 @@ To import the Synapse media store, you're supposed to invoke the `import_synapse
This guide here is adapted from the [upstream documentation about the import_synapse script](https://github.com/turt2live/matrix-media-repo#importing-media-from-synapse). This guide here is adapted from the [upstream documentation about the import_synapse script](https://github.com/turt2live/matrix-media-repo#importing-media-from-synapse).
Run the following command on the server (after replacing `devture_postgres_connection_password` in it with the value found in your `vars.yml` file): Run the following command on the server (after replacing `postgres_connection_password` in it with the value found in your `vars.yml` file):
```sh ```sh
docker exec -it matrix-media-repo \ docker exec -it matrix-media-repo \
@ -132,7 +133,7 @@ docker exec -it matrix-media-repo \
-dbHost matrix-postgres \ -dbHost matrix-postgres \
-dbPort 5432 \ -dbPort 5432 \
-dbUsername matrix \ -dbUsername matrix \
-dbPassword devture_postgres_connection_password -dbPassword postgres_connection_password
``` ```
Enter `1` for the Machine ID when prompted (you are not doing any horizontal scaling) unless you know what you're doing. Enter `1` for the Machine ID when prompted (you are not doing any horizontal scaling) unless you know what you're doing.
@ -145,7 +146,7 @@ If you're using the [Dendrite](configuring-playbook-dendrite.md) homeserver inst
To import the Dendrite media store, you're supposed to invoke the `import_dendrite` tool which is part of the matrix-media-repo container image. Your Dendrite database is called `dendrite_mediaapi` by default, unless you've changed it by modifying `matrix_dendrite_media_api_database`. To import the Dendrite media store, you're supposed to invoke the `import_dendrite` tool which is part of the matrix-media-repo container image. Your Dendrite database is called `dendrite_mediaapi` by default, unless you've changed it by modifying `matrix_dendrite_media_api_database`.
Run the following command on the server (after replacing `devture_postgres_connection_password` in it with the value found in your `vars.yml` file): Run the following command on the server (after replacing `postgres_connection_password` in it with the value found in your `vars.yml` file):
```sh ```sh
docker exec -it matrix-media-repo \ docker exec -it matrix-media-repo \
@ -154,7 +155,7 @@ docker exec -it matrix-media-repo \
-dbHost matrix-postgres \ -dbHost matrix-postgres \
-dbPort 5432 \ -dbPort 5432 \
-dbUsername matrix \ -dbUsername matrix \
-dbPassword devture_postgres_connection_password -dbPassword postgres_connection_password
``` ```
Enter `1` for the Machine ID when prompted (you are not doing any horizontal scaling) unless you know what you're doing. Enter `1` for the Machine ID when prompted (you are not doing any horizontal scaling) unless you know what you're doing.

View File

@ -6,7 +6,7 @@ The playbook can install and configure [matrix-registration](https://github.com/
**WARNING**: this is not related to [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md) **WARNING**: this is not related to [matrix-registration-bot](configuring-playbook-bot-matrix-registration-bot.md)
> matrix-registration is a simple python application to have a token based matrix registration. > matrix-registration is a simple python application to have a token based Matrix registration.
Use matrix-registration to **create unique registration links**, which people can use to register on your Matrix server. It allows you to **keep your server's registration closed (private)**, but still allow certain people (these having a special link) to register a user account. Use matrix-registration to **create unique registration links**, which people can use to register on your Matrix server. It allows you to **keep your server's registration closed (private)**, but still allow certain people (these having a special link) to register a user account.
@ -14,57 +14,83 @@ Use matrix-registration to **create unique registration links**, which people ca
- **an API for creating registration tokens** (unique registration links). This API can be used via `curl` or via the playbook (see [Usage](#usage) below) - **an API for creating registration tokens** (unique registration links). This API can be used via `curl` or via the playbook (see [Usage](#usage) below)
- **a user registration page**, where people can use these registration tokens. By default, exposed at `https://matrix.DOMAIN/matrix-registration` - **a user registration page**, where people can use these registration tokens. By default, exposed at `https://matrix.example.com/matrix-registration`
## Adjusting the playbook configuration
## Installing To enable matrix-registration, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
Adjust your playbook configuration (your `inventory/host_vars/matrix.DOMAIN/vars.yml` file):
```yaml ```yaml
matrix_registration_enabled: true matrix_registration_enabled: true
# Generate a strong secret using: `pwgen -s 64 1`. # Generate a strong secret here. Consider generating it with `pwgen -s 64 1`
matrix_registration_admin_secret: "ENTER_SOME_SECRET_HERE" matrix_registration_admin_secret: "ENTER_SOME_SECRET_HERE"
``` ```
Then, run the [installation](installing.md) command again: ### Adjusting the matrix-registration URL
By default, this playbook installs the matrix-registration on the `matrix.` subdomain, at the `/matrix-registration` path (https://matrix.example.com/matrix-registration). This makes it easy to install it, because it **doesn't require additional DNS records to be set up**. If that's okay, you can skip this section.
By tweaking the `matrix_registration_hostname` and `matrix_registration_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname and path prefix
matrix_registration_hostname: registration.example.com
matrix_registration_path_prefix: /
``` ```
## Adjusting DNS records
If you've changed the default hostname, **you may need to adjust your DNS** records to point the matrix-registration domain to the Matrix server.
See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to use the default hostname, you won't need to do any extra DNS configuration.
## Installing
After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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 ## Usage
**matrix-registration** gets exposed at `https://matrix.DOMAIN/matrix-registration` **matrix-registration** gets exposed at `https://matrix.example.com/matrix-registration`
It provides various [APIs](https://github.com/ZerataX/matrix-registration/wiki/api) - for creating registration tokens, listing tokens, disabling tokens, etc. To make use of all of its capabilities, consider using `curl`. It provides various [APIs](https://github.com/ZerataX/matrix-registration/wiki/api) - for creating registration tokens, listing tokens, disabling tokens, etc. To make use of all of its capabilities, consider using `curl`.
We make the most common APIs easy to use via the playbook (see below). We make the most common APIs easy to use via the playbook (see below).
### Creating registration tokens ### Creating registration tokens
To **create a new user registration token (link)**, use this command: To **create a new user registration token (link)**, use this command:
```bash ```sh
ansible-playbook -i inventory/hosts setup.yml \ ansible-playbook -i inventory/hosts setup.yml \
--tags=generate-matrix-registration-token \ --tags=generate-matrix-registration-token \
--extra-vars="one_time=yes ex_date=2021-12-31" --extra-vars="one_time=yes ex_date=2021-12-31"
``` ```
The above command creates and returns a **one-time use** token, which **expires** on the 31st of December 2021. The above command creates and returns a **one-time use** token, which **expires** on the 31st of December 2021. Adjust the `one_time` and `ex_date` variables as you see fit.
Adjust the `one_time` and `ex_date` variables as you see fit.
Share the unique registration link (generated by the command above) with users to let them register on your Matrix server. Share the unique registration link (generated by the command above) with users to let them register on your Matrix server.
### Listing registration tokens ### Listing registration tokens
To **list the existing user registration tokens**, use this command: To **list the existing user registration tokens**, use this command:
```bash ```sh
ansible-playbook -i inventory/hosts setup.yml \ ansible-playbook -i inventory/hosts setup.yml \
--tags=list-matrix-registration-tokens --tags=list-matrix-registration-tokens
``` ```
The shortcut command with `just` program is also available: `just run-tags list-matrix-registration-tokens`

View File

@ -1,28 +1,26 @@
# Setting up a Generic Mautrix Bridge (optional) # Setting up a Generic Mautrix Bridge (optional)
The playbook can install and configure various [mautrix](https://github.com/mautrix) bridges (twitter, facebook, instagram, signal, hangouts, googlechat, etc.), as well as many other (non-mautrix) bridges. The playbook can install and configure various [mautrix](https://github.com/mautrix) bridges (twitter, facebook, instagram, signal, hangouts, googlechat, etc.), as well as many other (non-mautrix) bridges. This is a common guide for configuring mautrix bridges.
This is a common guide for configuring mautrix bridges.
You can see each bridge's features at in the `ROADMAP.md` file in its corresponding [mautrix](https://github.com/mautrix) repository. You can see each bridge's features at in the `ROADMAP.md` file in its corresponding [mautrix](https://github.com/mautrix) repository.
To enable a bridge add: ## Adjusting the playbook configuration
To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
# Replace SERVICENAME with one of: twitter, facebook, instagram, .. # Replace SERVICENAME with one of: twitter, facebook, instagram, ..
matrix_mautrix_SERVICENAME_enabled: true matrix_mautrix_SERVICENAME_enabled: true
``` ```
to your `vars.yml`
There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_mautrix_telegram_api_id` and `matrix_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges. There are some additional things you may wish to configure about the bridge before you continue. Each bridge may have additional requirements besides `_enabled: true`. For example, the mautrix-telegram bridge (our documentation page about it is [here](configuring-playbook-bridge-mautrix-telegram.md)) requires the `matrix_mautrix_telegram_api_id` and `matrix_mautrix_telegram_api_hash` variables to be defined. Refer to each bridge's individual documentation page for details about enabling bridges.
You can add To **configure a user as an administrator for all bridges**, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_admin: "@YOUR_USERNAME:{{ matrix_domain }}" matrix_admin: "@YOUR_USERNAME:{{ matrix_domain }}"
``` ```
to `vars.yml` to **configure a user as an administrator for all bridges**.
**Alternatively** (more verbose, but allows multiple admins to be configured), you can do the same on a per-bridge basis with: **Alternatively** (more verbose, but allows multiple admins to be configured), you can do the same on a per-bridge basis with:
```yaml ```yaml
@ -34,7 +32,7 @@ matrix_mautrix_SERVICENAME_configuration_extension_yaml: |
## encryption ## encryption
Encryption support is off by default. If you would like to enable encryption, add the following to your `vars.yml` file: Encryption support is off by default. If you would like to enable encryption, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
**for all bridges with encryption support**: **for all bridges with encryption support**:
@ -52,7 +50,7 @@ matrix_mautrix_SERVICENAME_bridge_encryption_default: true
## relay mode ## relay mode
Relay mode is off by default. If you would like to enable relay mode, add the following to your `vars.yml` file: Relay mode is off by default. If you would like to enable relay mode, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
**for all bridges with relay mode support**: **for all bridges with relay mode support**:
@ -93,12 +91,28 @@ Can be used to set the username for the bridge.
You may wish to look at `roles/custom/matrix-bridge-mautrix-SERVICENAME/templates/config.yaml.j2` and `roles/custom/matrix-bridge-mautrix-SERVICENAME/defaults/main.yml` to find other things you would like to configure. You may wish to look at `roles/custom/matrix-bridge-mautrix-SERVICENAME/templates/config.yaml.j2` and `roles/custom/matrix-bridge-mautrix-SERVICENAME/defaults/main.yml` to find other things you would like to configure.
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
```
**Notes**:
- The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account.
- The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed.
## Set up Double Puppeting ## Set up Double Puppeting
To set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook. To set up [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) enable the [Appservice Double Puppet](configuring-playbook-appservice-double-puppet.md) service for this playbook.
The bridge will automatically perform Double Puppeting if you enable [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook by adding The bridge automatically performs Double Puppeting if [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) is configured and enabled on the server for this playbook by adding
```yaml ```yaml
matrix_appservice_double_puppet_enabled: true matrix_appservice_double_puppet_enabled: true
@ -116,18 +130,16 @@ to `vars.yml` to control the logging level, where you may replace WARN with one
If you have issues with a service, and are requesting support, the higher levels of logging will generally be more helpful. If you have issues with a service, and are requesting support, the higher levels of logging will generally be more helpful.
## Usage ## Usage
You then need to start a chat with `@SERVICENAMEbot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). You then need to start a chat with `@SERVICENAMEbot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).
Send `login ` to the bridge bot to get started You can learn more here about authentication from the bridge's official documentation on Authentication https://docs.mau.fi/bridges/python/SERVICENAME/authentication.html . Send `login` to the bridge bot to get started. You can learn more here about authentication from the bridge's official documentation on Authentication: https://docs.mau.fi/bridges/python/SERVICENAME/authentication.html
If you run into trouble, check the [Troubleshooting](#troubleshooting) section below. If you run into trouble, check the [Troubleshooting](#troubleshooting) section below.
## Troubleshooting ## Troubleshooting
For troubleshooting information with a specific bridge, please see the playbook documentation about it (some other document in in `docs/`) and the upstream ([mautrix](https://github.com/mautrix)) bridge documentation for that specific bridge. For troubleshooting information with a specific bridge, please see the playbook documentation about it (some other document in in `docs/`) and the upstream ([mautrix](https://github.com/mautrix)) bridge documentation for that specific bridge.
Reporting bridge bugs should happen upstream, in the corresponding mautrix repository, not to us. Reporting bridge bugs should happen upstream, in the corresponding mautrix repository, not to us.

View File

@ -1,26 +1,21 @@
# Setting up ntfy (optional) # Setting up the ntfy push notifications server (optional)
The playbook can install and configure the [ntfy](https://ntfy.sh/) push notifications server for you. The playbook can install and configure the [ntfy](https://ntfy.sh/) push notifications server for you.
Using the [UnifiedPush](https://unifiedpush.org) standard, ntfy enables self-hosted (Google-free) push notifications from Matrix (and other) servers to UnifiedPush-compatible matrix compatible client apps running on Android and other devices. Using the [UnifiedPush](https://unifiedpush.org) standard, ntfy enables self-hosted (Google-free) push notifications from Matrix (and other) servers to UnifiedPush-compatible Matrix compatible client apps running on Android and other devices.
This role is intended to support UnifiedPush notifications for use with the Matrix and Matrix-related services that this playbook installs. This role is not intended to support all of ntfy's other features. This role is intended to support UnifiedPush notifications for use with the Matrix and Matrix-related services that this playbook installs. This role is not intended to support all of ntfy's other features.
**Note**: In contrast to push notifications using Google's FCM or Apple's APNs, the use of UnifiedPush allows each end-user to choose the push notification server that they prefer. As a consequence, deploying this ntfy server does not by itself ensure any particular user or device or client app will use it. **Note**: In contrast to push notifications using Google's FCM or Apple's APNs, the use of UnifiedPush allows each end-user to choose the push notification server that they prefer. As a consequence, deploying this ntfy server does not by itself ensure any particular user or device or client app will use it.
## Adjusting the playbook configuration ## Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): To enable ntfy, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
# Enabling it is the only required setting # Enabling it is the only required setting
ntfy_enabled: true ntfy_enabled: true
# This is the default hostname.
# Uncomment the line below and change it, if you'd like.
# matrix_server_fqn_ntfy: "ntfy.{{ matrix_domain }}"
# Uncomment to enable the ntfy web app (disabled by default) # Uncomment to enable the ntfy web app (disabled by default)
# ntfy_web_root: app # defaults to "disable" # ntfy_web_root: app # defaults to "disable"
@ -29,44 +24,64 @@ ntfy_enabled: true
# log_level: DEBUG # log_level: DEBUG
``` ```
For a more complete list of variables that you could override, see the [`defaults/main.yml` file](https://gitlab.com/etke.cc/roles/ntfy/-/blob/main/defaults/main.yml) of the ntfy Ansible role. For a more complete list of variables that you could override, see the [`defaults/main.yml` file](https://github.com/mother-of-all-self-hosting/ansible-role-ntfy/blob/main/defaults/main.yml) of the ntfy Ansible role.
For a complete list of ntfy config options that you could put in `ntfy_configuration_extension_yaml`, see the [ntfy config documentation](https://ntfy.sh/docs/config/#config-options). For a complete list of ntfy config options that you could put in `ntfy_configuration_extension_yaml`, see the [ntfy config documentation](https://ntfy.sh/docs/config/#config-options).
### Adjusting the ntfy URL
By default, this playbook installs ntfy on the `ntfy.` subdomain (`ntfy.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `ntfy_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname
ntfy_hostname: push.example.com
```
## Adjusting DNS records
Once you've decided on the domain, **you may need to adjust your DNS** records to point the ntfy domain to the Matrix server.
By default, you will need to create a CNAME record for `ntfy`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
## Installing ## Installing
Don't forget to add `ntfy.<your-domain>` to DNS as described in [Configuring DNS](configuring-dns.md) before running the playbook. After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the playbook with [playbook tags](playbook-tags.md) as below:
After configuring the playbook, run the [installation](installing.md) command again: <!-- 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 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 ## Usage
To make use of your ntfy installation, on Android for example, you need two things: To make use of your ntfy installation, on Android for example, you need two things:
* the `ntfy` app * the `ntfy` app
* a UnifiedPush-compatible matrix app * a UnifiedPush-compatible Matrix app
You need to install the `ntfy` app on each device on which you want to receive push notifications through your ntfy server. The `ntfy` app will provide UnifiedPush notifications to any number of UnifiedPush-compatible messaging apps installed on the same device. You need to install the `ntfy` app on each device on which you want to receive push notifications through your ntfy server. The `ntfy` app will provide UnifiedPush notifications to any number of UnifiedPush-compatible messaging apps installed on the same device.
### Setting up the `ntfy` Android app ### Setting up the `ntfy` Android app
1. Install the [ntfy Android app](https://ntfy.sh/docs/subscribe/phone/) from F-droid or Google Play. 1. Install the [ntfy Android app](https://ntfy.sh/docs/subscribe/phone/) from F-droid or Google Play.
2. In its Settings -> `General: Default server`, enter your ntfy server URL, such as `https://ntfy.DOMAIN`. 2. In its Settings -> `General: Default server`, enter your ntfy server URL, such as `https://ntfy.example.com`.
3. In its Settings -> `Advanced: Connection protocol`, choose `WebSockets`. 3. In its Settings -> `Advanced: Connection protocol`, choose `WebSockets`.
That is all you need to do in the ntfy app. It has many other features, but for our purposes you can ignore them. In particular you do not need to follow any instructions about subscribing to a notification topic as UnifiedPush will do that automatically. That is all you need to do in the ntfy app. It has many other features, but for our purposes you can ignore them. In particular you do not need to follow any instructions about subscribing to a notification topic as UnifiedPush will do that automatically.
### Setting up a UnifiedPush-compatible matrix app ### Setting up a UnifiedPush-compatible Matrix app
Install any UnifiedPush-enabled matrix app on that same device. The matrix app will learn from the `ntfy` app that you have configured UnifiedPush on this device, and then it will tell your matrix server to use it. Install any UnifiedPush-enabled Matrix app on that same device. The Matrix app will learn from the `ntfy` app that you have configured UnifiedPush on this device, and then it will tell your Matrix server to use it.
Steps needed for specific matrix apps: Steps needed for specific Matrix apps:
* FluffyChat-android: * FluffyChat-android:
- Should auto-detect and use it. No manual settings. - Should auto-detect and use it. No manual settings.
@ -80,9 +95,9 @@ Steps needed for specific matrix apps:
1. choose `Settings` -> `Notifications` -> `Notification method` -> `ntfy` 1. choose `Settings` -> `Notifications` -> `Notification method` -> `ntfy`
2. verify `Settings` -> `Troubleshoot` -> `Troubleshoot notification settings` 2. verify `Settings` -> `Troubleshoot` -> `Troubleshoot notification settings`
If the matrix app asks, "Choose a distributor: FCM Fallback or ntfy", then choose "ntfy". If the Matrix app asks, "Choose a distributor: FCM Fallback or ntfy", then choose "ntfy".
If the matrix app doesn't seem to pick it up, try restarting it and try the Troubleshooting section below. If the Matrix app doesn't seem to pick it up, try restarting it and try the Troubleshooting section below.
### Web App ### Web App
@ -90,17 +105,16 @@ ntfy also has a web app to subscribe to and push to topics from the browser. Thi
The web app is disabled in this playbook by default as the expectation is that most users won't use it. You can either use the [official hosted one](https://ntfy.sh/app) (it supports using other public reachable ntfy instances) or host it yourself by setting `ntfy_web_root: "app"` and re-running Ansible. The web app is disabled in this playbook by default as the expectation is that most users won't use it. You can either use the [official hosted one](https://ntfy.sh/app) (it supports using other public reachable ntfy instances) or host it yourself by setting `ntfy_web_root: "app"` and re-running Ansible.
## Troubleshooting ## Troubleshooting
First check that the matrix client app you are using supports UnifiedPush. There may well be different variants of the app. First check that the Matrix client app you are using supports UnifiedPush. There may well be different variants of the app.
Set the ntfy server's log level to 'DEBUG', as shown in the example settings above, and watch the server's logs with `sudo journalctl -fu matrix-ntfy`. Set the ntfy server's log level to 'DEBUG', as shown in the example settings above, and watch the server's logs with `sudo journalctl -fu matrix-ntfy`.
To check if UnifiedPush is correctly configured on the client device, look at "Settings -> Notifications -> Notification Targets" in Element-Android or SchildiChat, or "Settings -> Notifications -> Devices" in FluffyChat. There should be one entry for each matrix client app that has enabled push notifications, and when that client is using UnifiedPush you should see a URL that begins with your ntfy server's URL. To check if UnifiedPush is correctly configured on the client device, look at "Settings -> Notifications -> Notification Targets" in Element Android or SchildiChat Android, or "Settings -> Notifications -> Devices" in FluffyChat. There should be one entry for each Matrix client app that has enabled push notifications, and when that client is using UnifiedPush you should see a URL that begins with your ntfy server's URL.
In the "Notification Targets" screen in Element-Android or SchildiChat, two relevant URLs are shown, "push\_key" and "Url", and both should begin with your ntfy server's URL. If "push\_key" shows your server but "Url" shows an external server such as `up.schildi.chat` then push notifications will still work but are being routed through that external server before they reach your ntfy server. To rectify that, in SchildiChat (at least around version 1.4.20.sc55) you must enable the `Force custom push gateway` setting as described in the "Usage" section above. In the "Notification Targets" screen in Element Android or SchildiChat Android, two relevant URLs are shown, "push\_key" and "Url", and both should begin with your ntfy server's URL. If "push\_key" shows your server but "Url" shows an external server such as `up.schildi.chat` then push notifications will still work but are being routed through that external server before they reach your ntfy server. To rectify that, in SchildiChat (at least around version 1.4.20.sc55) you must enable the `Force custom push gateway` setting as described in the "Usage" section above.
If it is not working, useful tools are "Settings -> Notifications -> Re-register push distributor" and "Settings -> Notifications -> Troubleshoot Notifications" in SchildiChat (possibly also Element-Android). In particular the "Endpoint/FCM" step of that troubleshooter should display your ntfy server's URL that it has discovered from the ntfy client app. If it is not working, useful tools are "Settings -> Notifications -> Re-register push distributor" and "Settings -> Notifications -> Troubleshoot Notifications" in SchildiChat Android (possibly also Element Android). In particular the "Endpoint/FCM" step of that troubleshooter should display your ntfy server's URL that it has discovered from the ntfy client app.
The simple [UnifiedPush troubleshooting](https://unifiedpush.org/users/troubleshooting/) app [UP-Example](https://f-droid.org/en/packages/org.unifiedpush.example/) can be used to manually test UnifiedPush registration and operation on an Android device. The simple [UnifiedPush troubleshooting](https://unifiedpush.org/users/troubleshooting/) app [UP-Example](https://f-droid.org/en/packages/org.unifiedpush.example/) can be used to manually test UnifiedPush registration and operation on an Android device.

View File

@ -1,8 +1,6 @@
# Using your own webserver, instead of this playbook's Traefik reverse-proxy (optional, advanced) # Using your own webserver, instead of this playbook's Traefik reverse-proxy (optional, advanced)
By default, this playbook installs its own [Traefik](https://traefik.io/) reverse-proxy server (in a Docker container) which listens on ports 80 and 443. By default, this playbook installs its own [Traefik](https://traefik.io/) reverse-proxy server (in a Docker container) which listens on ports 80 and 443. If that's okay, you can skip this document.
If that's alright, you can skip this.
## Traefik ## Traefik
@ -16,33 +14,40 @@ There are 2 ways to use Traefik with this playbook, as described below.
### Traefik managed by the playbook ### Traefik managed by the playbook
To have the playbook install and use Traefik, use configuration like this (as seen in `examples/vars.yml`): To have the playbook install and use Traefik, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_playbook_reverse_proxy_type: playbook-managed-traefik matrix_playbook_reverse_proxy_type: playbook-managed-traefik
devture_traefik_config_certificatesResolvers_acme_email: YOUR_EMAIL_ADDRESS traefik_config_certificatesResolvers_acme_email: YOUR_EMAIL_ADDRESS
``` ```
Traefik will manage SSL certificates for all services seamlessly. Traefik will manage SSL certificates for all services seamlessly.
### Traefik managed by you ### Traefik managed by you
```yaml ```yaml
matrix_playbook_reverse_proxy_type: other-traefik-container matrix_playbook_reverse_proxy_type: other-traefik-container
# Uncomment and adjust if your Traefik container is on another network # Uncomment and adjust this part if your Traefik container is on another network
# matrix_playbook_reverse_proxy_container_network: traefik # matrix_playbook_reverse_proxy_container_network: traefik
# 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
devture_traefik_certs_dumper_ssl_dir_path: "/path/to/your/traefiks/acme.json/directory" traefik_certs_dumper_ssl_dir_path: "/path/to/your/traefiks/acme.json/directory"
# Uncomment and tweak 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).
# matrix_federation_traefik_entrypoint_name: matrix-federation # matrix_federation_traefik_entrypoint_name: matrix-federation
# Uncomment and adjust the variables below if you'd like to enable HTTP-compression.
#
# For this to work, you will need to define a compress middleware (https://doc.traefik.io/traefik/middlewares/http/compress/) for your Traefik instance
# using a file (https://doc.traefik.io/traefik/providers/file/) or Docker (https://doc.traefik.io/traefik/providers/docker/) configuration provider.
#
# matrix_playbook_reverse_proxy_traefik_middleware_compression_enabled: true
# matrix_playbook_reverse_proxy_traefik_middleware_compression_name: my-compression-middleware@file
``` ```
In this mode all roles will still have Traefik labels attached. You will, however, need to configure your Traefik instance and its entrypoints. In this mode all roles will still have Traefik labels attached. You will, however, need to configure your Traefik instance and its entrypoints.
@ -86,7 +91,7 @@ version: "3.3"
services: services:
traefik: traefik:
image: "docker.io/traefik:v2.9.6" image: "docker.io/traefik:v3.2.0"
restart: always restart: always
container_name: "traefik" container_name: "traefik"
networks: networks:
@ -126,7 +131,6 @@ There are 2 ways to go about it:
- (difficult) [Using no reverse-proxy on the Matrix side at all](#using-no-reverse-proxy-on-the-matrix-side-at-all) disabling the playbook-managed reverse-proxy (Traefik), exposing services one by one using `_host_bind_port` variables and forwarding traffic from your own webserver to those ports - (difficult) [Using no reverse-proxy on the Matrix side at all](#using-no-reverse-proxy-on-the-matrix-side-at-all) disabling the playbook-managed reverse-proxy (Traefik), exposing services one by one using `_host_bind_port` variables and forwarding traffic from your own webserver to those ports
### Fronting the integrated reverse-proxy webserver with another reverse-proxy ### Fronting the integrated reverse-proxy webserver with another reverse-proxy
This method is about leaving the integrated reverse-proxy webserver be, but making it not get in the way (using up important ports, trying to retrieve SSL certificates, etc.). This method is about leaving the integrated reverse-proxy webserver be, but making it not get in the way (using up important ports, trying to retrieve SSL certificates, etc.).
@ -148,18 +152,18 @@ matrix_playbook_ssl_enabled: true
# Disable the web-secure (port 443) endpoint, which also disables SSL certificate retrieval. # Disable the web-secure (port 443) endpoint, which also disables SSL certificate retrieval.
# This has the side-effect of also automatically disabling TLS for the matrix-federation entrypoint # This has the side-effect of also automatically disabling TLS for the matrix-federation entrypoint
# (by toggling `matrix_federation_traefik_entrypoint_tls`). # (by toggling `matrix_federation_traefik_entrypoint_tls`).
devture_traefik_config_entrypoint_web_secure_enabled: false traefik_config_entrypoint_web_secure_enabled: false
# If your reverse-proxy runs on another machine, consider using `0.0.0.0:81`, just `81` or `SOME_IP_ADDRESS_OF_THIS_MACHINE:81` # If your reverse-proxy runs on another machine, consider using `0.0.0.0:81`, just `81` or `SOME_IP_ADDRESS_OF_THIS_MACHINE:81`
devture_traefik_container_web_host_bind_port: '127.0.0.1:81' traefik_container_web_host_bind_port: '127.0.0.1:81'
# We bind to `127.0.0.1` by default (see above), so trusting `X-Forwarded-*` headers from # We bind to `127.0.0.1` by default (see above), so trusting `X-Forwarded-*` headers from
# a reverse-proxy running on the local machine is safe enough. # a reverse-proxy running on the local machine is safe enough.
# If you're publishing the port (`devture_traefik_container_web_host_bind_port` above) to a public network interface: # If you're publishing the port (`traefik_container_web_host_bind_port` above) to a public network interface:
# - remove the `devture_traefik_config_entrypoint_web_forwardedHeaders_insecure` variable definition below # - remove the `traefik_config_entrypoint_web_forwardedHeaders_insecure` variable definition below
# - uncomment and adjust the `devture_traefik_config_entrypoint_web_forwardedHeaders_trustedIPs` line below # - uncomment and adjust the `traefik_config_entrypoint_web_forwardedHeaders_trustedIPs` line below
devture_traefik_config_entrypoint_web_forwardedHeaders_insecure: true traefik_config_entrypoint_web_forwardedHeaders_insecure: true
# devture_traefik_config_entrypoint_web_forwardedHeaders_trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY'] # traefik_config_entrypoint_web_forwardedHeaders_trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY']
# Expose the federation entrypoint on a custom port (other than port 8448, which is normally used publicly). # Expose the federation entrypoint on a custom port (other than port 8448, which is normally used publicly).
# #
@ -187,15 +191,13 @@ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom:
# trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY'] # trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY']
``` ```
Such a configuration would expose all services on a local port `81` and Matrix Federation on a local port `8449`. Such a configuration would expose all services on a local port `81` and Matrix Federation on a local port `8449`. Your reverse-proxy configuration needs to send traffic to these ports. [`examples/reverse-proxies`](../examples/reverse-proxies/) contains examples for various webservers such as Apache2, Caddy, HAproxy, nginx and Nginx Proxy Manager.
Your reverse-proxy configuration needs to send traffic to these ports. The [`examples/reverse-proxies` directory](../examples/reverse-proxies/) contains sample configuration for various webservers (Apache2, Caddy, HAproxy, nginx, Nginx Proxy Manager). It's important that these webservers proxy-pass requests to the correct `ip:port` and also set the `Host` HTTP header appropriately. If you don't pass the `Host` header correctly, Traefik will return a `404 - not found` error.
It's important that these webservers proxy-pass requests to the correct place and also set the `Host` HTTP header appropriately.
If you don't pass the `Host` header correctly, you would get a 404 not found error from Traefik.
To put it another way, `curl http://127.0.0.1:81` would give you a 404, but `curl -H 'Host: matrix.DOMAIN' http://127.0.0.1:81` should work.
To put it another way:
- `curl http://127.0.0.1:81` will result in a `404 - not found` error
- but `curl -H 'Host: matrix.example.com' http://127.0.0.1:81` should work.
### Using no reverse-proxy on the Matrix side at all ### Using no reverse-proxy on the Matrix side at all

View File

@ -1,4 +1,4 @@
# Setting up pantalaimon (optional) # Setting up Pantalaimon (E2EE aware proxy daemon) (optional)
The playbook can install and configure the [pantalaimon](https://github.com/matrix-org/pantalaimon) E2EE aware proxy daemon for you. The playbook can install and configure the [pantalaimon](https://github.com/matrix-org/pantalaimon) E2EE aware proxy daemon for you.
@ -8,7 +8,7 @@ This role exposes Pantalaimon's API only within the container network, so bots a
## 1. Adjusting the playbook configuration ## 1. Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs): Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
matrix_pantalaimon_enabled: true matrix_pantalaimon_enabled: true
@ -18,4 +18,13 @@ The default configuration should suffice. For advanced configuration, you can ov
## 2. Installing ## 2. Installing
After configuring the playbook, run the [installation](installing.md) command. After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.

View File

@ -1,36 +1,38 @@
# Setting up postgres backup (optional) # Setting up postgres backup (optional)
The playbook can install and configure [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) for you via the [com.devture.ansible.role.postgres_backup](https://github.com/devture/com.devture.ansible.role.postgres_backup) Ansible role. The playbook can install and configure [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) for you via the [ansible-role-postgres-backup](https://github.com/mother-of-all-self-hosting/ansible-role-postgres-backup) Ansible role.
For a more complete backup solution (one that includes not only Postgres, but also other configuration/data files), you may wish to look into [borg backup](configuring-playbook-backup-borg.md) instead.
For a more complete backup solution (one that includes not only Postgres, but also other configuration/data files), you may wish to look into [BorgBackup](configuring-playbook-backup-borg.md) instead.
## Adjusting the playbook configuration ## Adjusting the playbook configuration
Minimal working configuration (`inventory/host_vars/matrix.DOMAIN/vars.yml`) to enable Postgres backup: To enable Postgres backup, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
devture_postgres_backup_enabled: true postgres_backup_enabled: true
``` ```
Refer to the table below for additional configuration variables and their default values. Refer to the table below for additional configuration variables and their default values.
| Name | Default value | Description | | Name | Default value | Description |
| :-------------------------------- | :--------------------------- | :--------------------------------------------------------------- | | :-------------------------------- | :--------------------------- | :--------------------------------------------------------------- |
|`devture_postgres_backup_enabled`|`false`|Set to true to use [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) to create automatic database backups| |`postgres_backup_enabled`|`false`|Set to true to use [docker-postgres-backup-local](https://github.com/prodrigestivill/docker-postgres-backup-local) to create automatic database backups|
|`devture_postgres_backup_schedule`| `'@daily'` |Cron-schedule specifying the interval between postgres backups.| |`postgres_backup_schedule`| `'@daily'` |Cron-schedule specifying the interval between postgres backups.|
|`devture_postgres_backup_keep_days`|`7`|Number of daily backups to keep| |`postgres_backup_keep_days`|`7`|Number of daily backups to keep|
|`devture_postgres_backup_keep_weeks`|`4`|Number of weekly backups to keep| |`postgres_backup_keep_weeks`|`4`|Number of weekly backups to keep|
|`devture_postgres_backup_keep_months`|`12`|Number of monthly backups to keep| |`postgres_backup_keep_months`|`12`|Number of monthly backups to keep|
|`devture_postgres_backup_base_path` | `"{{ matrix_base_data_path }}/postgres-backup"` | Base path for postgres-backup. Also see `devture_postgres_backup_data_path` | |`postgres_backup_base_path` | `"{{ matrix_base_data_path }}/postgres-backup"` | Base path for postgres-backup. Also see `postgres_backup_data_path` |
|`devture_postgres_backup_data_path` | `"{{ devture_postgres_backup_base_path }}/data"` | Storage path for postgres-backup database backups | |`postgres_backup_data_path` | `"{{ postgres_backup_base_path }}/data"` | Storage path for postgres-backup database backups |
## Installing ## Installing
After configuring the playbook, run the [installation](installing.md) command again: After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
``` <!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start 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.

View File

@ -1,10 +1,10 @@
# Enabling metrics and graphs for your Matrix server (optional) # Enabling metrics and graphs (Prometheus, Grafana) for your Matrix server (optional)
It can be useful to have some (visual) insight into the performance of your homeserver. The playbook can install [Grafana](https://grafana.com/) with [Prometheus](https://prometheus.io/) and configure performance metrics of your homeserver with graphs for you.
You can enable this with the following settings in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): ## Adjusting the playbook configuration
Remember to add `stats.<your-domain>` to DNS as described in [Configuring DNS](configuring-dns.md) before running the playbook. To enable Grafana and/or Prometheus, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
prometheus_enabled: true prometheus_enabled: true
@ -22,7 +22,7 @@ grafana_enabled: true
grafana_anonymous_access: false grafana_anonymous_access: false
# This has no relation to your Matrix user id. It can be any username you'd like. # This has no relation to your Matrix user ID. It can be any username you'd like.
# Changing the username subsequently won't work. # Changing the username subsequently won't work.
grafana_default_admin_user: "some_username_chosen_by_you" grafana_default_admin_user: "some_username_chosen_by_you"
@ -30,10 +30,41 @@ grafana_default_admin_user: "some_username_chosen_by_you"
grafana_default_admin_password: "some_strong_password_chosen_by_you" grafana_default_admin_password: "some_strong_password_chosen_by_you"
``` ```
By default, a [Grafana](https://grafana.com/) web user-interface will be available at `https://stats.<your-domain>`.
The retention policy of Prometheus metrics is [15 days by default](https://prometheus.io/docs/prometheus/latest/storage/#operational-aspects). Older data gets deleted automatically. The retention policy of Prometheus metrics is [15 days by default](https://prometheus.io/docs/prometheus/latest/storage/#operational-aspects). Older data gets deleted automatically.
### Adjusting the Grafana URL
By default, this playbook installs Grafana web user-interface on the `stats.` subdomain (`stats.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `grafana_hostname` variable, you can easily make the service available at a **different hostname** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Change the default hostname
grafana_hostname: grafana.example.com
```
## Adjusting DNS records
Once you've decided on the domain, **you may need to adjust your DNS** records to point the Grafana domain to the Matrix server.
By default, you will need to create a CNAME record for `stats`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
**Note**: It is possible to install Prometheus without installing Grafana. This case it is not required to create the CNAME record.
## 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.
## What does it do? ## What does it do?
@ -43,25 +74,23 @@ Name | Description
`prometheus_node_exporter_enabled`|[Node Exporter](https://prometheus.io/docs/guides/node-exporter/) is an addon of sorts to Prometheus that collects generic system information such as CPU, memory, filesystem, and even system temperatures `prometheus_node_exporter_enabled`|[Node Exporter](https://prometheus.io/docs/guides/node-exporter/) is an addon of sorts to Prometheus that collects generic system information such as CPU, memory, filesystem, and even system temperatures
`prometheus_postgres_exporter_enabled`|[Postgres Exporter](configuring-playbook-prometheus-postgres.md) is an addon of sorts to expose Postgres database metrics to Prometheus. `prometheus_postgres_exporter_enabled`|[Postgres Exporter](configuring-playbook-prometheus-postgres.md) is an addon of sorts to expose Postgres database metrics to Prometheus.
`matrix_prometheus_nginxlog_exporter_enabled`|[NGINX Log Exporter](configuring-playbook-prometheus-nginxlog.md) is an addon of sorts to expose NGINX logs to Prometheus. `matrix_prometheus_nginxlog_exporter_enabled`|[NGINX Log Exporter](configuring-playbook-prometheus-nginxlog.md) is an addon of sorts to expose NGINX logs to Prometheus.
`grafana_enabled`|[Grafana](https://grafana.com/) is the visual component. It shows (on the `stats.<your-domain>` subdomain) the dashboards with the graphs that we're interested in `grafana_enabled`|[Grafana](https://grafana.com/) is the visual component. It shows (on the `stats.example.com` subdomain) the dashboards with the graphs that we're interested in
`grafana_anonymous_access`|By default you need to log in to see graphs. If you want to publicly share your graphs (e.g. when asking for help in [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org?via=matrix.org&via=privacytools.io&via=mozilla.org)) you'll want to enable this option. `grafana_anonymous_access`|By default you need to log in to see graphs. If you want to publicly share your graphs (e.g. when asking for help in [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org?via=matrix.org&via=privacytools.io&via=mozilla.org)) you'll want to enable this option.
`grafana_default_admin_user`<br>`grafana_default_admin_password`|By default Grafana creates a user with `admin` as the username and password. If you feel this is insecure and you want to change it beforehand, you can do that here `grafana_default_admin_user`<br>`grafana_default_admin_password`|By default Grafana creates a user with `admin` as the username and password. If you feel this is insecure and you want to change it beforehand, you can do that here
## Security and privacy ## Security and privacy
Metrics and resulting graphs can contain a lot of information. This includes system specs but also usage patterns. This applies especially to small personal/family scale homeservers. Someone might be able to figure out when you wake up and go to sleep by looking at the graphs over time. Think about this before enabling anonymous access. And you should really not forget to change your Grafana password. Metrics and resulting graphs can contain a lot of information. This includes system specs but also usage patterns. This applies especially to small personal/family scale homeservers. Someone might be able to figure out when you wake up and go to sleep by looking at the graphs over time. Think about this before enabling anonymous access. And you should really not forget to change your Grafana password.
Most of our docker containers run with limited system access, but the `prometheus-node-exporter` has access to the host network stack and (readonly) root filesystem. This is required to report on them. If you don't like that, you can set `prometheus_node_exporter_enabled: false` (which is actually the default). You will still get Synapse metrics with this container disabled. Both of the dashboards will always be enabled, so you can still look at historical data after disabling either source. Most of our docker containers run with limited system access, but the `prometheus-node-exporter` has access to the host network stack and (readonly) root filesystem. This is required to report on them. If you don't like that, you can set `prometheus_node_exporter_enabled: false` (which is actually the default). You will still get Synapse metrics with this container disabled. Both of the dashboards will always be enabled, so you can still look at historical data after disabling either source.
## Collecting metrics to an external Prometheus server ## Collecting metrics to an external Prometheus server
**If the integrated Prometheus server is enabled** (`prometheus_enabled: true`), metrics are collected by it from each service via communication that happens over the container network. Each service does not need to expose its metrics "publicly". **If the integrated Prometheus server is enabled** (`prometheus_enabled: true`), metrics are collected by it from each service via communication that happens over the container network. Each service does not need to expose its metrics "publicly".
When you'd like **to collect metrics from an external Prometheus server**, you need to expose service metrics outside of the container network. When you'd like **to collect metrics from an external Prometheus server**, you need to expose service metrics outside of the container network.
The playbook provides a single endpoint (`https://matrix.DOMAIN/metrics/*`), under which various services may expose their metrics (e.g. `/metrics/node-exporter`, `/metrics/postgres-exporter`, `/metrics/hookshot`, etc). To expose all services on this `/metrics/*` feature, use `matrix_metrics_exposure_enabled`. To protect access using [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication), see `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users` below. The playbook provides a single endpoint (`https://matrix.example.com/metrics/*`), under which various services may expose their metrics (e.g. `/metrics/node-exporter`, `/metrics/postgres-exporter`, `/metrics/hookshot`, etc). To expose all services on this `/metrics/*` feature, use `matrix_metrics_exposure_enabled`. To protect access using [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication), see `matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users` below.
When using `matrix_metrics_exposure_enabled`, you don't need to expose metrics for individual services one by one. When using `matrix_metrics_exposure_enabled`, you don't need to expose metrics for individual services one by one.
@ -69,29 +98,29 @@ The following variables may be of interest:
Name | Description Name | Description
-----|---------- -----|----------
`matrix_metrics_exposure_enabled`|Set this to `true` to **enable metrics exposure for all services** on `https://matrix.DOMAIN/metrics/*`. If you think this is too much, refer to the helpful (but nonexhaustive) list of individual `matrix_SERVICE_metrics_proxying_enabled` (or similar) variables below for exposing metrics on a per-service basis. `matrix_metrics_exposure_enabled`|Set this to `true` to **enable metrics exposure for all services** on `https://matrix.example.com/metrics/*`. If you think this is too much, refer to the helpful (but nonexhaustive) list of individual `matrix_SERVICE_metrics_proxying_enabled` (or similar) variables below for exposing metrics on a per-service basis.
`matrix_metrics_exposure_http_basic_auth_enabled`|Set this to `true` to protect all `https://matrix.DOMAIN/metrics/*` endpoints with [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) (see the other variables below for supplying the actual credentials). When enabled, all endpoints beneath `/metrics` will be protected with the same credentials `matrix_metrics_exposure_http_basic_auth_enabled`|Set this to `true` to protect all `https://matrix.example.com/metrics/*` endpoints with [Basic Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) (see the other variables below for supplying the actual credentials). When enabled, all endpoints beneath `/metrics` will be protected with the same credentials
`matrix_metrics_exposure_http_basic_auth_users`|Set this to the Basic Authentication credentials (raw `htpasswd` file content) used to protect `/metrics/*`. This htpasswd-file needs to be generated with the `htpasswd` tool and can include multiple username/password pairs. `matrix_metrics_exposure_http_basic_auth_users`|Set this to the Basic Authentication credentials (raw `htpasswd` file content) used to protect `/metrics/*`. This htpasswd-file needs to be generated with the `htpasswd` tool and can include multiple username/password pairs.
`matrix_synapse_metrics_enabled`|Set this to `true` to make Synapse expose metrics (locally, on the container network) `matrix_synapse_metrics_enabled`|Set this to `true` to make Synapse expose metrics (locally, on the container network)
`matrix_synapse_metrics_proxying_enabled`|Set this to `true` to expose Synapse's metrics on `https://matrix.DOMAIN/metrics/synapse/main-process` and `https://matrix.DOMAIN/metrics/synapse/worker/TYPE-ID`. Read [below](#collecting-synapse-worker-metrics-to-an-external-prometheus-server) if you're running a Synapse worker setup (`matrix_synapse_workers_enabled: true`). To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. `matrix_synapse_metrics_proxying_enabled`|Set this to `true` to expose Synapse's metrics on `https://matrix.example.com/metrics/synapse/main-process` and `https://matrix.example.com/metrics/synapse/worker/TYPE-ID`. Read [below](#collecting-synapse-worker-metrics-to-an-external-prometheus-server) if you're running a Synapse worker setup (`matrix_synapse_workers_enabled: true`). To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above.
`prometheus_node_exporter_enabled`|Set this to `true` to enable the node (general system stats) exporter (locally, on the container network) `prometheus_node_exporter_enabled`|Set this to `true` to enable the node (general system stats) exporter (locally, on the container network)
`prometheus_node_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the node (general system stats) metrics on `https://matrix.DOMAIN/metrics/node-exporter`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. `prometheus_node_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the node (general system stats) metrics on `https://matrix.example.com/metrics/node-exporter`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above.
`prometheus_postgres_exporter_enabled`|Set this to `true` to enable the [Postgres exporter](configuring-playbook-prometheus-postgres.md) (locally, on the container network) `prometheus_postgres_exporter_enabled`|Set this to `true` to enable the [Postgres exporter](configuring-playbook-prometheus-postgres.md) (locally, on the container network)
`prometheus_postgres_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the [Postgres exporter](configuring-playbook-prometheus-postgres.md) metrics on `https://matrix.DOMAIN/metrics/postgres-exporter`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. `prometheus_postgres_exporter_container_labels_traefik_enabled`|Set this to `true` to expose the [Postgres exporter](configuring-playbook-prometheus-postgres.md) metrics on `https://matrix.example.com/metrics/postgres-exporter`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above.
`matrix_prometheus_nginxlog_exporter_enabled`|Set this to `true` to enable the [NGINX Log exporter](configuring-playbook-prometheus-nginxlog.md) (locally, on the container network) `matrix_prometheus_nginxlog_exporter_enabled`|Set this to `true` to enable the [NGINX Log exporter](configuring-playbook-prometheus-nginxlog.md) (locally, on the container network)
`matrix_sliding_sync_metrics_enabled`|Set this to `true` to make [Sliding Sync](configuring-playbook-sliding-sync-proxy.md) expose metrics (locally, on the container network) `matrix_sliding_sync_metrics_enabled`|Set this to `true` to make [Sliding Sync](configuring-playbook-sliding-sync-proxy.md) expose metrics (locally, on the container network)
`matrix_sliding_sync_metrics_proxying_enabled`|Set this to `true` to expose the [Sliding Sync](configuring-playbook-sliding-sync-proxy.md) metrics on `https://matrix.DOMAIN/metrics/sliding-sync`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. `matrix_sliding_sync_metrics_proxying_enabled`|Set this to `true` to expose the [Sliding Sync](configuring-playbook-sliding-sync-proxy.md) metrics on `https://matrix.example.com/metrics/sliding-sync`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above.
`matrix_bridge_hookshot_metrics_enabled`|Set this to `true` to make [Hookshot](configuring-playbook-bridge-hookshot.md) expose metrics (locally, on the container network) `matrix_bridge_hookshot_metrics_enabled`|Set this to `true` to make [Hookshot](configuring-playbook-bridge-hookshot.md) expose metrics (locally, on the container network)
`matrix_bridge_hookshot_metrics_proxying_enabled`|Set this to `true` to expose the [Hookshot](configuring-playbook-bridge-hookshot.md) metrics on `https://matrix.DOMAIN/metrics/hookshot`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above. `matrix_bridge_hookshot_metrics_proxying_enabled`|Set this to `true` to expose the [Hookshot](configuring-playbook-bridge-hookshot.md) metrics on `https://matrix.example.com/metrics/hookshot`. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above.
`matrix_SERVICE_metrics_proxying_enabled`|Various other services/roles may provide similar `_metrics_enabled` and `_metrics_proxying_enabled` variables for exposing their metrics. Refer to each role for details. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above or `matrix_SERVICE_container_labels_metrics_middleware_basic_auth_enabled`/`matrix_SERVICE_container_labels_metrics_middleware_basic_auth_users` variables provided by each role. `matrix_SERVICE_metrics_proxying_enabled`|Various other services/roles may provide similar `_metrics_enabled` and `_metrics_proxying_enabled` variables for exposing their metrics. Refer to each role for details. To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` above or `matrix_SERVICE_container_labels_metrics_middleware_basic_auth_enabled`/`matrix_SERVICE_container_labels_metrics_middleware_basic_auth_users` variables provided by each role.
`matrix_media_repo_metrics_enabled`|Set this to `true` to make media-repo expose metrics (locally, on the container network) `matrix_media_repo_metrics_enabled`|Set this to `true` to make media-repo expose metrics (locally, on the container network)
### Collecting Synapse worker metrics to an external Prometheus server ### Collecting Synapse worker metrics to an external Prometheus server
If you are using workers (`matrix_synapse_workers_enabled: true`) and have enabled `matrix_synapse_metrics_proxying_enabled` as described above, the playbook will also automatically expose all Synapse worker threads' metrics to `https://matrix.DOMAIN/metrics/synapse/worker/ID`, where `ID` corresponds to the worker `id` as exemplified in `matrix_synapse_workers_enabled_list`. If you are using workers (`matrix_synapse_workers_enabled: true`) and have enabled `matrix_synapse_metrics_proxying_enabled` as described above, the playbook will also automatically expose all Synapse worker threads' metrics to `https://matrix.example.com/metrics/synapse/worker/ID`, where `ID` corresponds to the worker `id` as exemplified in `matrix_synapse_workers_enabled_list`.
The playbook also generates an exemplary config file (`/matrix/synapse/external_prometheus.yml.template`) with all the correct paths which you can copy to your Prometheus server and adapt to your needs. Make sure to edit the specified `password_file` path and contents and path to your `synapse-v2.rules`. It will look a bit like this:
The playbook also generates an exemplary config file (`/matrix/synapse/external_prometheus.yml.template`) with all the correct paths which you can copy to your Prometheus server and adapt to your needs. Make sure to edit the specified `password_file` path and contents and path to your `synapse-v2.rules`.
It will look a bit like this:
```yaml ```yaml
scrape_configs: scrape_configs:
- job_name: 'synapse' - job_name: 'synapse'
@ -101,7 +130,7 @@ scrape_configs:
username: prometheus username: prometheus
password_file: /etc/prometheus/password.pwd password_file: /etc/prometheus/password.pwd
static_configs: static_configs:
- targets: ['matrix.DOMAIN:443'] - targets: ['matrix.example.com:443']
labels: labels:
job: "master" job: "master"
index: 1 index: 1
@ -112,13 +141,12 @@ scrape_configs:
username: prometheus username: prometheus
password_file: /etc/prometheus/password.pwd password_file: /etc/prometheus/password.pwd
static_configs: static_configs:
- targets: ['matrix.DOMAIN:443'] - targets: ['matrix.example.com:443']
labels: labels:
job: "generic_worker" job: "generic_worker"
index: 18111 index: 18111
``` ```
## More information ## More information
- [Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md) - [Enabling synapse-usage-exporter for Synapse usage statistics](configuring-playbook-synapse-usage-exporter.md)

View File

@ -6,7 +6,7 @@ This adds [prometheus-nginxlog-exporter](https://github.com/martin-helmich/prome
It will collect access logs from various nginx reverse-proxies which may be used internally (e.g. `matrix-synapse-reverse-proxy-companion`, if Synapse workers are enabled) and will make them available at a Prometheus-compatible `/metrics` endpoint. It will collect access logs from various nginx reverse-proxies which may be used internally (e.g. `matrix-synapse-reverse-proxy-companion`, if Synapse workers are enabled) and will make them available at a Prometheus-compatible `/metrics` endpoint.
**NOTE**: nginx is only used internally by this Ansible playbook. With Traefik being our default reverse-proxy, collecting nginx metrics is less relevant. **Note**: nginx is only used internally by this Ansible playbook. With Traefik being our default reverse-proxy, collecting nginx metrics is less relevant.
To make use of this, you need to install [Prometheus](./configuring-playbook-prometheus-grafana.md) either via the playbook or externally. When using an external Prometheus, configuration adjustments are necessary - see [Save metrics on an external Prometheus server](#save-metrics-on-an-external-prometheus-server). To make use of this, you need to install [Prometheus](./configuring-playbook-prometheus-grafana.md) either via the playbook or externally. When using an external Prometheus, configuration adjustments are necessary - see [Save metrics on an external Prometheus server](#save-metrics-on-an-external-prometheus-server).
@ -14,20 +14,28 @@ If your setup includes [Grafana](./configuring-playbook-prometheus-grafana.md),
## Configuration ## Configuration
You can enable this role by adding the following settings in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
matrix_prometheus_nginxlog_exporter_enabled: true matrix_prometheus_nginxlog_exporter_enabled: true
``` ```
Then, re-run the playbook. See [installation](./installing.md). ## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
## Docker Image Compatibility ## Docker Image Compatibility
At the moment of writing only images for `amd64` and `arm64` architectures are available At the moment of writing only images for `amd64` and `arm64` architectures are available. The playbook currently does not support [self-building](./self-building.md) a container image on other architectures. You can however use a custom-build image by setting:
The playbook currently does not support [self-building](./self-building.md) a container image on other architectures.
You can however use a custom-build image by setting:
```yaml ```yaml
matrix_prometheus_nginxlog_exporter_docker_image_arch_check_enabled: false matrix_prometheus_nginxlog_exporter_docker_image_arch_check_enabled: false
@ -36,8 +44,7 @@ matrix_prometheus_nginxlog_exporter_docker_image: path/to/docker/image:tag
## Security and privacy ## Security and privacy
Metrics and resulting graphs can contain a lot of information. NginX logs contain information like IP address, URLs, UserAgents and more. This information can reveal usage patterns and could be considered Personally Identifiable Information (PII). Think about this before enabling (anonymous) access. Metrics and resulting graphs can contain a lot of information. NginX logs contain information like IP address, URLs, UserAgents and more. This information can reveal usage patterns and could be considered Personally Identifiable Information (PII). Think about this before enabling (anonymous) access. Please make sure you change the default Grafana password.
Please make sure you change the default Grafana password.
## Save metrics on an external Prometheus server ## Save metrics on an external Prometheus server
@ -47,8 +54,6 @@ When using an external Prometheus server, you'll need to expose metrics publicly
You can either use `matrix_prometheus_nginxlog_exporter_metrics_proxying_enabled: true` to expose just this one service, or `matrix_metrics_exposure_enabled: true` to expose all services. You can either use `matrix_prometheus_nginxlog_exporter_metrics_proxying_enabled: true` to expose just this one service, or `matrix_metrics_exposure_enabled: true` to expose all services.
Whichever way you go with, this service will expose its metrics endpoint **without password-protection** at `https://matrix.DOMAIN/metrics/nginxlog` by default. Whichever way you go with, this service will expose its metrics endpoint **without password-protection** at `https://matrix.example.com/metrics/nginxlog` by default.
For password-protection, use (`matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users`) or (`matrix_prometheus_nginxlog_exporter_container_labels_metrics_middleware_basic_auth_enabled` and `matrix_prometheus_nginxlog_exporter_container_labels_metrics_middleware_basic_auth_users`). For password-protection, use (`matrix_metrics_exposure_http_basic_auth_enabled` and `matrix_metrics_exposure_http_basic_auth_users`) or (`matrix_prometheus_nginxlog_exporter_container_labels_metrics_middleware_basic_auth_enabled` and `matrix_prometheus_nginxlog_exporter_container_labels_metrics_middleware_basic_auth_users`).

View File

@ -2,13 +2,27 @@
Expanding on the metrics exposed by the [synapse exporter and the node exporter](configuring-playbook-prometheus-grafana.md), the playbook enables the [postgres exporter](https://github.com/prometheus-community/postgres_exporter) that exposes more detailed information about what's happening on your postgres database. Expanding on the metrics exposed by the [synapse exporter and the node exporter](configuring-playbook-prometheus-grafana.md), the playbook enables the [postgres exporter](https://github.com/prometheus-community/postgres_exporter) that exposes more detailed information about what's happening on your postgres database.
You can enable this with the following settings in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`): ## Adjusting the playbook configuration
To enable the postgres exporter, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml ```yaml
prometheus_postgres_exporter_enabled: true prometheus_postgres_exporter_enabled: true
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.
## What does it do? ## What does it do?
Name | Description Name | Description
@ -16,10 +30,8 @@ Name | Description
`prometheus_postgres_exporter_enabled`|Enable the postgres prometheus exporter. This sets up the docker container, connects it to the database and adds a 'job' to the prometheus config which tells prometheus about this new exporter. The default is 'false' `prometheus_postgres_exporter_enabled`|Enable the postgres prometheus exporter. This sets up the docker container, connects it to the database and adds a 'job' to the prometheus config which tells prometheus about this new exporter. The default is 'false'
`prometheus_postgres_exporter_database_username`| The 'username' for the user that the exporter uses to connect to the database. The default is 'matrix_prometheus_postgres_exporter' `prometheus_postgres_exporter_database_username`| The 'username' for the user that the exporter uses to connect to the database. The default is 'matrix_prometheus_postgres_exporter'
`prometheus_postgres_exporter_database_password`| The 'password' for the user that the exporter uses to connect to the database. By default, this is auto-generated by the playbook `prometheus_postgres_exporter_database_password`| The 'password' for the user that the exporter uses to connect to the database. By default, this is auto-generated by the playbook
`prometheus_postgres_exporter_container_labels_traefik_enabled`|If set to `true`, exposes the Postgres exporter metrics on `https://matrix.DOMAIN/metrics/postgres-exporter` for usage with an [external Prometheus server](configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server). To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` on that other documentation page. `prometheus_postgres_exporter_container_labels_traefik_enabled`|If set to `true`, exposes the Postgres exporter metrics on `https://matrix.example.com/metrics/postgres-exporter` for usage with an [external Prometheus server](configuring-playbook-prometheus-grafana.md#collecting-metrics-to-an-external-prometheus-server). To password-protect the metrics, see `matrix_metrics_exposure_http_basic_auth_users` on that other documentation page.
## More information ## More information
- [The PostgresSQL dashboard](https://grafana.com/grafana/dashboards/9628) (generic postgres dashboard) - [The PostgresSQL dashboard](https://grafana.com/grafana/dashboards/9628) (generic postgres dashboard)

View File

@ -1,42 +1,18 @@
# Setting up Rageshake (optional) # Setting up the rageshake bug report server (optional)
The playbook can install and configure the [rageshake](https://github.com/matrix-org/rageshake) bug report server for you. The playbook can install and configure the [rageshake](https://github.com/matrix-org/rageshake) bug report server for you.
This is useful if you're developing your own applications and would like to collect bug reports for them. This is useful if you're developing your own applications and would like to collect bug reports for them.
## Adjusting the playbook configuration
## Decide on a domain and path To enable rageshake, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
By default, Rageshake is configured to use its own dedicated domain (`rageshake.DOMAIN`) and requires you to [adjust your DNS records](#adjusting-dns-records).
You can override the domain and path like this:
```yaml
# Switch to the domain used for Matrix services (`matrix.DOMAIN`),
# so we won't need to add additional DNS records for Rageshake.
matrix_rageshake_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /rageshake subpath
matrix_rageshake_path_prefix: /rageshake
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the Rageshake domain to the Matrix server.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Enabling the Rageshake service
Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file (adapt to your needs):
```yaml ```yaml
matrix_rageshake_enabled: true matrix_rageshake_enabled: true
``` ```
Rageshake has various options which don't have dedicated Ansible variables. You can see the full list of options in the [`rageshake.sample.yaml` file](https://github.com/matrix-org/rageshake/blob/master/rageshake.sample.yaml). rageshake has various options which don't have dedicated Ansible variables. You can see the full list of options in the [`rageshake.sample.yaml` file](https://github.com/matrix-org/rageshake/blob/master/rageshake.sample.yaml).
To set these, you can make use of the `matrix_rageshake_configuration_extension_yaml` variable like this: To set these, you can make use of the `matrix_rageshake_configuration_extension_yaml` variable like this:
@ -48,15 +24,43 @@ matrix_rageshake_configuration_extension_yaml: |
my-app: octocat/HelloWorld my-app: octocat/HelloWorld
``` ```
### Adjusting the rageshake URL
By default, this playbook installs rageshake on the `rageshake.` subdomain (`rageshake.example.com`) and requires you to [adjust your DNS records](#adjusting-dns-records).
By tweaking the `matrix_rageshake_hostname` and `matrix_rageshake_path_prefix` variables, you can easily make the service available at a **different hostname and/or path** than the default one.
Example additional configuration for your `inventory/host_vars/matrix.example.com/vars.yml` file:
```yaml
# Switch to the domain used for Matrix services (`matrix.example.com`),
# so we won't need to add additional DNS records for rageshake.
matrix_rageshake_hostname: "{{ matrix_server_fqn_matrix }}"
# Expose under the /rageshake subpath
matrix_rageshake_path_prefix: /rageshake
```
## Adjusting DNS records
Once you've decided on the domain and path, **you may need to adjust your DNS** records to point the rageshake domain to the Matrix server.
By default, you will need to create a CNAME record for `rageshake`. See [Configuring DNS](configuring-dns.md) for details about DNS changes.
If you've decided to reuse the `matrix.` domain, you won't need to do any extra DNS configuration.
## Installing ## Installing
After configuring the playbook, run the [installation](installing.md) command again: 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 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 ## Usage

View File

@ -4,7 +4,9 @@ The playbook can install and configure [matrix-synapse-rest-auth](https://github
See that project's documentation to learn what it does and why it might be useful to you. See that project's documentation to learn what it does and why it might be useful to you.
If you decide that you'd like to let this playbook install it for you, you need some configuration like this: ## Adjusting the playbook configuration
Add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
```yaml ```yaml
matrix_synapse_ext_password_provider_rest_auth_enabled: true matrix_synapse_ext_password_provider_rest_auth_enabled: true
@ -14,7 +16,6 @@ matrix_synapse_ext_password_provider_rest_auth_registration_profile_name_autofil
matrix_synapse_ext_password_provider_rest_auth_login_profile_name_autofill: false matrix_synapse_ext_password_provider_rest_auth_login_profile_name_autofill: false
``` ```
## Authenticating only using a password provider ## Authenticating only using a password provider
If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, feel free to disable it: If you wish for users to **authenticate only against configured password providers** (like this one), **without consulting Synapse's local database**, feel free to disable it:
@ -22,3 +23,16 @@ If you wish for users to **authenticate only against configured password provide
```yaml ```yaml
matrix_synapse_password_config_localdb_enabled: false matrix_synapse_password_config_localdb_enabled: false
``` ```
## Installing
After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.

View File

@ -4,31 +4,36 @@ By default, this playbook **used to install** the [Riot-web](https://github.com/
Riot has since been [renamed to Element](https://element.io/blog/welcome-to-element/). Riot has since been [renamed to Element](https://element.io/blog/welcome-to-element/).
- to learn more about Element and its configuration, see our dedicated [Configuring Element](configuring-playbook-client-element.md) documentation page - to learn more about Element Web and its configuration, see our dedicated [Configuring Element Web](configuring-playbook-client-element-web.md) documentation page
- to learn how to migrate from Riot to Element, see [Migrating to Element](#migrating-to-element) below - to learn how to migrate from Riot to Element Web, see [Migrating to Element Web](#migrating-to-element-web) below
## Migrating to Element Web
## Migrating to Element
### Migrating your custom settings ### Migrating your custom settings
If you have custom `matrix_riot_web_` variables in your `inventory/host_vars/matrix.DOMAIN/vars.yml` file, you'll need to rename them (`matrix_riot_web_` -> `matrix_client_element_`). If you have custom `matrix_riot_web_` variables in your `inventory/host_vars/matrix.example.com/vars.yml` file, you'll need to rename them (`matrix_riot_web_` -> `matrix_client_element_`).
Some other playbook variables (but not all) with `riot` in their name are also renamed. The playbook checks and warns if you are using the old name for some commonly used ones. Some other playbook variables (but not all) with `riot` in their name are also renamed. The playbook checks and warns if you are using the old name for some commonly used ones.
### Domain migration ### Domain migration
We used to set up Riot at the `riot.DOMAIN` domain. The playbook now sets up Element at `element.DOMAIN` by default. We used to set up Riot at the `riot.example.com` domain. The playbook now sets up Element Web at `element.example.com` by default.
There are a few options for handling this: There are a few options for handling this:
- (**avoiding changes** - using the old `riot.DOMAIN` domain and avoiding DNS changes) -- to keep using `riot.DOMAIN` instead of `element.DOMAIN`, override the domain at which the playbook serves Element: `matrix_server_fqn_element: "riot.{{ matrix_domain }}"` - (**avoiding changes** - using the old `riot.example.com` domain and avoiding DNS changes) -- to keep using `riot.example.com` instead of `element.example.com`, override the domain at which the playbook serves Element Web: `matrix_server_fqn_element: "riot.{{ matrix_domain }}"`
- (**embracing changes** - using only `element.DOMAIN`) - set up the `element.DOMAIN` DNS record (see [Configuring DNS](configuring-dns.md)). You can drop the `riot.DOMAIN` in this case.
- (**embracing changes** - using only `element.example.com`) - set up the `element.example.com` DNS record (see [Configuring DNS](configuring-dns.md)). You can drop the `riot.example.com` in this case.
### Re-running the playbook ### Re-running the playbook
As always, after making the necessary DNS and configuration adjustments, [re-run the playbook](./installing.md) to apply the changes. After configuring the playbook, run it with [playbook tags](playbook-tags.md) as below:
<!-- NOTE: let this conservative command run (instead of install-all) to make it clear that failure of the command means something is clearly broken. -->
```sh
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
``` ```
The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
`just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. Note these shortcuts run the `ensure-matrix-users-created` tag too.

View File

@ -1,7 +1,6 @@
# Storing Matrix media files on Amazon S3 with Goofys (optional) # Storing Matrix media files on Amazon S3 with Goofys (optional)
If you'd like to store Synapse's content repository (`media_store`) files on Amazon S3 (or other S3-compatible service), If you'd like to store Synapse's content repository (`media_store`) files on Amazon S3 (or other S3-compatible service), you can let this playbook configure [Goofys](https://github.com/kahing/goofys) for you.
you can let this playbook configure [Goofys](https://github.com/kahing/goofys) for you.
Another (and better performing) way to use S3 storage with Synapse is [synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md). Another (and better performing) way to use S3 storage with Synapse is [synapse-s3-storage-provider](configuring-playbook-synapse-s3-storage-provider.md).
@ -9,10 +8,9 @@ Using a Goofys-backed media store works, but performance may not be ideal. If po
If you'd like to move your locally-stored media store data to Amazon S3 (or another S3-compatible object store), we also provide some migration instructions below. If you'd like to move your locally-stored media store data to Amazon S3 (or another S3-compatible object store), we also provide some migration instructions below.
## Adjusting the playbook configuration
## Usage After [creating the S3 bucket and configuring it](configuring-playbook-s3.md#bucket-creation-and-security-configuration), add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file (adapt to your needs):
After [creating the S3 bucket and configuring it](configuring-playbook-s3.md#bucket-creation-and-security-configuration), you can proceed to configure Goofys in your configuration file (`inventory/host_vars/matrix.<your-domain>/vars.yml`):
```yaml ```yaml
matrix_s3_media_store_enabled: true matrix_s3_media_store_enabled: true
@ -31,104 +29,95 @@ matrix_s3_media_store_custom_endpoint: "https://your-custom-endpoint"
If you have local media store files and wish to migrate to Backblaze B2 subsequently, follow our [migration guide to Backblaze B2](#migrating-to-backblaze-b2) below instead of applying this configuration as-is. If you have local media store files and wish to migrate to Backblaze B2 subsequently, follow our [migration guide to Backblaze B2](#migrating-to-backblaze-b2) below instead of applying this configuration as-is.
## Migrating from local filesystem storage to S3 ## Migrating from local filesystem storage to S3
It's a good idea to [make a complete server backup](faq.md#how-do-i-backup-the-data-on-my-server) before migrating your local media store to an S3-backed one. It's a good idea to [make a complete server backup](faq.md#how-do-i-back-up-the-data-on-my-server) before migrating your local media store to an S3-backed one.
Follow one of the guides below for a migration path from a locally-stored media store to one stored on S3-compatible storage: After making the backup, follow one of the guides below for a migration path from a locally-stored media store to one stored on S3-compatible storage:
- [Storing Matrix media files on Amazon S3 with Goofys (optional)](#storing-matrix-media-files-on-amazon-s3-with-goofys-optional) - [Migrating to any S3-compatible storage (universal, but likely slow)](#migrating-to-any-s3-compatible-storage-universal-but-likely-slow)
- [Usage](#usage) - [Migrating to Backblaze B2](#migrating-to-backblaze-b2)
- [Migrating from local filesystem storage to S3](#migrating-from-local-filesystem-storage-to-s3)
- [Migrating to any S3-compatible storage (universal, but likely slow)](#migrating-to-any-s3-compatible-storage-universal-but-likely-slow)
- [Migrating to Backblaze B2](#migrating-to-backblaze-b2)
### Migrating to any S3-compatible storage (universal, but likely slow) ### Migrating to any S3-compatible storage (universal, but likely slow)
It's a good idea to [make a complete server backup](faq.md#how-do-i-backup-the-data-on-my-server) before doing this.
1. Proceed with the steps below without stopping Matrix services 1. Proceed with the steps below without stopping Matrix services
2. Start by adding the base S3 configuration in your `vars.yml` file (seen above, may be different depending on the S3 provider of your choice) 2. Start by adding the base S3 configuration in your `vars.yml` file (seen above, may be different depending on the S3 provider of your choice)
3. In addition to the base configuration you see above, add this to your `vars.yml` file: 3. In addition to the base configuration you see above, add this to your `vars.yml` file:
```yaml ```yaml
matrix_s3_media_store_path: /matrix/s3-media-store matrix_s3_media_store_path: /matrix/s3-media-store
``` ```
This enables S3 support, but mounts the S3 storage bucket to `/matrix/s3-media-store` without hooking it to your homeserver yet. Your homeserver will still continue using your local filesystem for its media store. This enables S3 support, but mounts the S3 storage bucket to `/matrix/s3-media-store` without hooking it to your homeserver yet. Your homeserver will still continue using your local filesystem for its media store.
5. Run the playbook to apply the changes: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` 4. Run the playbook to apply the changes: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`
6. Do an **initial sync of your files** by running this **on the server** (it may take a very long time): 5. Do an **initial sync of your files** by running this **on the server** (it may take a very long time):
```sh ```sh
sudo -u matrix -- rsync --size-only --ignore-existing -avr /matrix/synapse/storage/media-store/. /matrix/s3-media-store/. sudo -u matrix -- rsync --size-only --ignore-existing -avr /matrix/synapse/storage/media-store/. /matrix/s3-media-store/.
``` ```
You may need to install `rsync` manually. You may need to install `rsync` manually.
7. Stop all Matrix services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`) 6. Stop all Matrix services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`)
8. Start the S3 service by running this **on the server**: `systemctl start matrix-goofys` 7. Start the S3 service by running this **on the server**: `systemctl start matrix-goofys`
9. Sync the files again by re-running the `rsync` command you see in step #6 8. Sync the files again by re-running the `rsync` command you see in step #5
10. Stop the S3 service by running this **on the server**: `systemctl stop matrix-goofys` 9. Stop the S3 service by running this **on the server**: `systemctl stop matrix-goofys`
11. Get the old media store out of the way by running this command on the server: 10. Get the old media store out of the way by running this command on the server:
```sh ```sh
mv /matrix/synapse/storage/media-store /matrix/synapse/storage/media-store-local-backup mv /matrix/synapse/storage/media-store /matrix/synapse/storage/media-store-local-backup
``` ```
12. Remove the `matrix_s3_media_store_path` configuration from your `vars.yml` file (undoing step #3 above) 11. Remove the `matrix_s3_media_store_path` configuration from your `vars.yml` file (undoing step #3 above)
13. Run the playbook: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` 12. Run the playbook: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`
14. You're done! Verify that loading existing (old) media files works and that you can upload new ones. 13. You're done! Verify that loading existing (old) media files works and that you can upload new ones.
15. When confident that it all works, get rid of the local media store directory: `rm -rf /matrix/synapse/storage/media-store-local-backup`
14. When confident that it all works, get rid of the local media store directory: `rm -rf /matrix/synapse/storage/media-store-local-backup`
### Migrating to Backblaze B2 ### Migrating to Backblaze B2
It's a good idea to [make a complete server backup](faq.md#how-do-i-backup-the-data-on-my-server) before doing this.
1. While all Matrix services are running, run the following command on the server: 1. While all Matrix services are running, run the following command on the server:
(you need to adjust the 3 `--env` line below with your own data) (you need to adjust the 3 `--env` line below with your own data)
```sh ```sh
docker run -it --rm -w /work \ docker run -it --rm -w /work \
--env='B2_KEY_ID=YOUR_KEY_GOES_HERE' \ --env='B2_KEY_ID=YOUR_KEY_GOES_HERE' \
--env='B2_KEY_SECRET=YOUR_SECRET_GOES_HERE' \ --env='B2_KEY_SECRET=YOUR_SECRET_GOES_HERE' \
--env='B2_BUCKET_NAME=YOUR_BUCKET_NAME_GOES_HERE' \ --env='B2_BUCKET_NAME=YOUR_BUCKET_NAME_GOES_HERE' \
--mount type=bind,src=/matrix/synapse/storage/media-store,dst=/work,ro \ --mount type=bind,src=/matrix/synapse/storage/media-store,dst=/work,ro \
--entrypoint=/bin/sh \ --entrypoint=/bin/sh \
docker.io/tianon/backblaze-b2:3.6.0 \ docker.io/tianon/backblaze-b2:3.6.0 \
-c 'b2 authorize-account $B2_KEY_ID $B2_KEY_SECRET && b2 sync /work b2://$B2_BUCKET_NAME --skipNewer' -c 'b2 authorize-account $B2_KEY_ID $B2_KEY_SECRET && b2 sync /work b2://$B2_BUCKET_NAME --skipNewer'
``` ```
This is some initial file sync, which may take a very long time. This is some initial file sync, which may take a very long time.
2. Stop all Matrix services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`) 2. Stop all Matrix services (`ansible-playbook -i inventory/hosts setup.yml --tags=stop`)
3. Run the command from step #1 again. 3. Run the command from step #1 again.
Doing this will sync any new files that may have been created locally in the meantime. Doing this will sync any new files that may have been created locally in the meantime.
Now that Matrix services aren't running, we're sure to get Backblaze B2 and your local media store fully in sync. Now that Matrix services aren't running, we're sure to get Backblaze B2 and your local media store fully in sync.
4. Get the old media store out of the way by running this command on the server: 4. Get the old media store out of the way by running this command on the server:
```sh ```sh
mv /matrix/synapse/storage/media-store /matrix/synapse/storage/media-store-local-backup mv /matrix/synapse/storage/media-store /matrix/synapse/storage/media-store-local-backup
``` ```
5. Put the [Backblaze B2 settings seen above](#backblaze-b2) in your `vars.yml` file 5. Put the [Backblaze B2 settings](configuring-playbook-s3.md#backblaze-b2) in your `vars.yml` file
6. Run the playbook: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start` 6. Run the playbook: `ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start`

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