Procházet zdrojové kódy

Merge branch 'master' of https://github.com/spantaleev/matrix-docker-ansible-deploy into matrixzulipbridge

pull/4695/head
Suguru Hirahara před 3 měsíci
rodič
revize
428aa2543e
71 změnil soubory, kde provedl 199 přidání a 3544 odebrání
  1. +29
    -1
      CHANGELOG.md
  2. +2
    -7
      README.md
  3. +1
    -1
      docs/configuring-playbook-bridge-appservice-discord.md
  4. +1
    -1
      docs/configuring-playbook-bridge-appservice-slack.md
  5. +11
    -53
      docs/configuring-playbook-bridge-go-skype-bridge.md
  6. +2
    -2
      docs/configuring-playbook-bridge-mautrix-discord.md
  7. +1
    -1
      docs/configuring-playbook-bridge-mautrix-slack.md
  8. +0
    -2
      docs/configuring-playbook-bridge-mautrix-twitter.md
  9. +15
    -35
      docs/configuring-playbook-bridge-mx-puppet-discord.md
  10. +16
    -37
      docs/configuring-playbook-bridge-mx-puppet-instagram.md
  11. +1
    -1
      docs/configuring-playbook-bridge-mx-puppet-skype.md
  12. +15
    -40
      docs/configuring-playbook-bridge-mx-puppet-slack.md
  13. +3
    -3
      docs/configuring-playbook-bridge-mx-puppet-steam.md
  14. +14
    -42
      docs/configuring-playbook-bridge-mx-puppet-twitter.md
  15. +10
    -10
      docs/configuring-playbook.md
  16. +4
    -5
      docs/container-images.md
  17. +0
    -357
      group_vars/matrix_servers
  18. +1
    -1
      i18n/requirements.txt
  19. +10
    -10
      requirements.yml
  20. +1
    -1
      roles/custom/matrix-alertmanager-receiver/defaults/main.yml
  21. +0
    -164
      roles/custom/matrix-bridge-go-skype-bridge/defaults/main.yml
  22. +0
    -25
      roles/custom/matrix-bridge-go-skype-bridge/tasks/main.yml
  23. +0
    -155
      roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_install.yml
  24. +0
    -25
      roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_uninstall.yml
  25. +0
    -28
      roles/custom/matrix-bridge-go-skype-bridge/tasks/validate_config.yml
  26. +0
    -237
      roles/custom/matrix-bridge-go-skype-bridge/templates/config.yaml.j2
  27. +0
    -6
      roles/custom/matrix-bridge-go-skype-bridge/templates/config.yaml.j2.license
  28. +0
    -48
      roles/custom/matrix-bridge-go-skype-bridge/templates/systemd/matrix-go-skype-bridge.service.j2
  29. +0
    -4
      roles/custom/matrix-bridge-go-skype-bridge/templates/systemd/matrix-go-skype-bridge.service.j2.license
  30. +0
    -144
      roles/custom/matrix-bridge-mx-puppet-discord/defaults/main.yml
  31. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml
  32. +0
    -144
      roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_install.yml
  33. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_uninstall.yml
  34. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-discord/tasks/validate_config.yml
  35. +0
    -125
      roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2
  36. +0
    -6
      roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2.license
  37. +0
    -48
      roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2
  38. +0
    -5
      roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2.license
  39. +0
    -132
      roles/custom/matrix-bridge-mx-puppet-instagram/defaults/main.yml
  40. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml
  41. +0
    -124
      roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_install.yml
  42. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_uninstall.yml
  43. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-instagram/tasks/validate_config.yml
  44. +0
    -69
      roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2
  45. +0
    -5
      roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2.license
  46. +0
    -48
      roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2
  47. +0
    -5
      roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2.license
  48. +0
    -184
      roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml
  49. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml
  50. +0
    -150
      roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_install.yml
  51. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_uninstall.yml
  52. +0
    -32
      roles/custom/matrix-bridge-mx-puppet-slack/tasks/validate_config.yml
  53. +0
    -83
      roles/custom/matrix-bridge-mx-puppet-slack/templates/config.yaml.j2
  54. +0
    -8
      roles/custom/matrix-bridge-mx-puppet-slack/templates/config.yaml.j2.license
  55. +0
    -47
      roles/custom/matrix-bridge-mx-puppet-slack/templates/labels.j2
  56. +0
    -52
      roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2
  57. +0
    -6
      roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2.license
  58. +0
    -184
      roles/custom/matrix-bridge-mx-puppet-twitter/defaults/main.yml
  59. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml
  60. +0
    -155
      roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_install.yml
  61. +0
    -26
      roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_uninstall.yml
  62. +0
    -32
      roles/custom/matrix-bridge-mx-puppet-twitter/tasks/validate_config.yml
  63. +0
    -79
      roles/custom/matrix-bridge-mx-puppet-twitter/templates/config.yaml.j2
  64. +0
    -5
      roles/custom/matrix-bridge-mx-puppet-twitter/templates/config.yaml.j2.license
  65. +0
    -47
      roles/custom/matrix-bridge-mx-puppet-twitter/templates/labels.j2
  66. +0
    -51
      roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2
  67. +0
    -5
      roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2.license
  68. +1
    -1
      roles/custom/matrix-client-cinny/defaults/main.yml
  69. +1
    -1
      roles/custom/matrix-client-element/defaults/main.yml
  70. +60
    -0
      roles/custom/matrix_playbook_migration/tasks/validate_config.yml
  71. +0
    -5
      setup.yml

+ 29
- 1
CHANGELOG.md Zobrazit soubor

@@ -1,3 +1,31 @@
# 2025-11-05

## The MX Puppet bridges for Discord, Instagram, Slack, and Twitter have been removed from the playbook

The MX Puppet bridges for Discord, Instagram, Slack, and Twitter have been removed from the playbook, as they have been unmaintained for more than several years and do not support important features like authenticated media. See [this issue](https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/3867) for the context.

The playbook will let you know if you're using any variables for those bridges:

- `matrix_mx_puppet_discord_*`
- `matrix_mx_puppet_instagram_*`
- `matrix_mx_puppet_slack_*`
- `matrix_mx_puppet_twitter_*`

You'll need to remove them from `vars.yml` and potentially uninstall them manually. Consult pages below for details:

- [Instruction for MX Puppet Discord bridge](./docs/configuring-playbook-bridge-mx-puppet-discord.md#uninstalling-the-bridge-manually)
- [Instruction for MX Puppet Instagram bridge](./docs/configuring-playbook-bridge-mx-puppet-instagram.md#uninstalling-the-bridge-manually)
- [Instruction for MX Puppet Slack bridge](./docs/configuring-playbook-bridge-mx-puppet-slack.md#uninstalling-the-bridge-manually)
- [Instruction for MX Puppet Twitter bridge](./docs/configuring-playbook-bridge-mx-puppet-twitter.md#uninstalling-the-bridge-manually)

# 2025-11-04

## The Go Skype bridge has been removed from the playbook

The [go-skype-bridge](./docs/configuring-playbook-bridge-go-skype-bridge.md) has been removed from the playbook, as Skype has been discontinued since the May 2025.

The playbook will let you know if you're using any `matrix_go_skype_bridge_*` variables. You'll need to remove them from `vars.yml` and potentially [uninstall the bridge manually](./docs/configuring-playbook-bridge-go-skype-bridge.md#uninstalling-the-bridge-manually).

# 2025-10-02

## Element Admin support
@@ -2825,7 +2853,7 @@ See our [Migrating to Element Web](docs/configuring-playbook-riot-web.md#migrati

## Steam bridging support via mx-puppet-steam

Thanks to [Hugues Morisset](https://github.com/izissise)'s efforts, the playbook now supports bridging to [Steam](https://steamapp.com/) via the [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) bridge. See our [Setting up MX Puppet Steam bridging](docs/configuring-playbook-bridge-mx-puppet-steam.md) documentation page for getting started.
Thanks to [Hugues Morisset](https://github.com/izissise)'s efforts, the playbook now supports bridging to [Steam](https://steamapp.com/) via the [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) bridge. See our [Setting up MX Puppet Steam bridging](docs/configuring-playbook-bridge-mx-puppet-steam.md) documentation page for getting started.


# 2020-07-01


+ 2
- 7
README.md Zobrazit soubor

@@ -132,17 +132,12 @@ Bridges can be used to connect your Matrix installation with third-party communi
| [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-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-sms-bridge](https://github.com/benkuly/matrix-sms-bridge) | ❌ | Bridge to SMS | [Link](docs/configuring-playbook-bridge-matrix-bridge-sms.md) |
| [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) | ❌ | Bridge to [Steam](https://steampowered.com/) | [Link](docs/configuring-playbook-bridge-steam.md) |
| [matrix-wechat](https://github.com/duo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) | [Link](docs/configuring-playbook-bridge-wechat.md) |
| [MatrixZulipBridge](https://github.com/GearKite/MatrixZulipBridge) | ❌ | Puppeting appservice bridge for [Zulip](https://zulip.com/) | [Link](docs/configuring-playbook-bridge-zulip.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) | ❌ | Bridge to [Skype](https://www.skype.com) | [Link](docs/configuring-playbook-bridge-go-skype-bridge.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) | ❌ | 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) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) | [Link](docs/configuring-playbook-bridge-mx-puppet-twitter.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) | ❌ | 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) | ❌ | Bridge to [Steam](https://steamapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-steam.md) |
| [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) | ❌ | Bridge to [Steam](https://steampowered.com/) | [Link](docs/configuring-playbook-bridge-steam.md) |
| [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) | [Link](docs/configuring-playbook-bridge-mx-puppet-steam.md) |
| [Postmoogle](https://github.com/etkecc/postmoogle) | ❌ | Email to Matrix bridge | [Link](docs/configuring-playbook-bridge-postmoogle.md) |

### Bots


+ 1
- 1
docs/configuring-playbook-bridge-appservice-discord.md Zobrazit soubor

@@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later

# 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 [mautrix-discord](configuring-playbook-bridge-mautrix-discord.md) bridge 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 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.



+ 1
- 1
docs/configuring-playbook-bridge-appservice-slack.md Zobrazit soubor

@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
# Setting up Appservice Slack bridging (optional)

**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.
- Bridging to [Slack](https://slack.com) can also happen via the [mautrix-slack](configuring-playbook-bridge-mautrix-slack.md) bridge 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.


+ 11
- 53
docs/configuring-playbook-bridge-go-skype-bridge.md Zobrazit soubor

@@ -1,68 +1,26 @@
<!--
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2021 MDAD project contributors
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara

SPDX-License-Identifier: AGPL-3.0-or-later
-->

# Setting up Go Skype Bridge bridging (optional)
# Setting up Go Skype Bridge bridging (optional, removed)

The playbook can install and configure [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge) for you, for bridging to [Skype](https://www.skype.com/). This bridge was created based on [mautrix-whatsapp](https://github.com/mautrix/whatsapp) and can be configured in a similar way to it.
🪦 The playbook used to be able to install and configure [go-skype-bridge](https://github.com/kelaresg/go-skype-bridge), but no longer includes this component, as Skype has been discontinued since May 2025.

See the project's [documentation](https://github.com/kelaresg/go-skype-bridge/blob/master/README.md) to learn what it does and why it might be useful to you.
## Uninstalling the bridge manually

## Prerequisite (optional)
If you still have the Go Skype bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:

### Enable Shared Secret Auth

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.

See [this section](configuring-playbook-bridge-mautrix-bridges.md#set-up-double-puppeting-optional) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about setting up Double Puppeting.

**Note**: double puppeting with the Shared Secret Auth works at the time of writing, but is deprecated and will stop working in the future.

## Adjusting the playbook configuration

To enable the bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:

```yaml
matrix_go_skype_bridge_enabled: true
```

### Extending the configuration

There are some additional things you may wish to configure about the bridge.

See [this section](configuring-playbook-bridge-mautrix-bridges.md#extending-the-configuration) on the [common guide for configuring mautrix bridges](configuring-playbook-bridge-mautrix-bridges.md) for details about variables that you can customize and the bridge's default configuration, including [bridge permissions](configuring-playbook-bridge-mautrix-bridges.md#configure-bridge-permissions-optional), [encryption support](configuring-playbook-bridge-mautrix-bridges.md#enable-encryption-optional), [relay mode](configuring-playbook-bridge-mautrix-bridges.md#enable-relay-mode-optional), [bot's username](configuring-playbook-bridge-mautrix-bridges.md#set-the-bots-username-optional), etc.

**Note**: when following the guide to configure the bridge, make sure to replace `_mautrix_SERVICENAME_` in the variable names with `_go_skype_bridge_`.

## 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.

## Usage

To use the bridge, you need to start a chat with `@skypebridgebot:example.com` (where `example.com` is your base domain, not the `matrix.` domain).

## Troubleshooting

As with all other services, you can find the logs in [systemd-journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html) by logging in to the server with SSH and running `journalctl -fu matrix-go-skype-bridge`.

### Increase logging verbosity
systemctl disable --now matrix-go-skype-bridge.service

The default logging level for this component is `warn`. If you want to increase the verbosity, add the following configuration to your `vars.yml` file and re-run the playbook:
rm -rf /matrix/go-skype-bridge

```yaml
# Valid values: fatal, error, warn, info, debug
matrix_go_skype_bridge_log_level: 'info'
/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_go_skype_bridge;'
```

+ 2
- 2
docs/configuring-playbook-bridge-mautrix-discord.md Zobrazit soubor

@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later

<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>

**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 [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md) bridge 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 personal use with a discord account we recommend the `mautrix-discord` bridge (the one being discussed here), because it is the most fully-featured and stable of the 3 Discord bridges supported by the playbook.

@@ -26,7 +26,7 @@ See the project's [documentation](https://docs.mau.fi/bridges/go/discord/index.h

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 [matrix-appservice-discord](configuring-playbook-bridge-appservice-discord.md). This comes with its own complexity and limitations, however, so we recommend that you proceed with this one if possible.

### Enable Appservice Double Puppet or Shared Secret Auth (optional)



+ 1
- 1
docs/configuring-playbook-bridge-mautrix-slack.md Zobrazit soubor

@@ -11,7 +11,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later

<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>

**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 [matrix-appservice-slack](configuring-playbook-bridge-appservice-slack.md) bridge supported by the playbook.
- 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.



+ 0
- 2
docs/configuring-playbook-bridge-mautrix-twitter.md Zobrazit soubor

@@ -11,8 +11,6 @@ SPDX-License-Identifier: AGPL-3.0-or-later

<sup>Refer the common guide for configuring mautrix bridges: [Setting up a Generic Mautrix Bridge](configuring-playbook-bridge-mautrix-bridges.md)</sup>

**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.

The playbook can install and configure [mautrix-twitter](https://github.com/mautrix/twitter) for you.

See the project's [documentation](https://github.com/mautrix/twitter/blob/master/README.md) to learn what it does and why it might be useful to you.


+ 15
- 35
docs/configuring-playbook-bridge-mx-puppet-discord.md Zobrazit soubor

@@ -1,51 +1,31 @@
<!--
SPDX-FileCopyrightText: 2020 - 2022 Slavi Pantaleev
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2020 Hugues Morisset
SPDX-FileCopyrightText: 2020 Tulir Asokan
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 MDAD project contributors
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara

SPDX-License-Identifier: AGPL-3.0-or-later
-->

# Setting up MX Puppet Discord bridging (optional)
# Setting up MX Puppet Discord bridging (optional, removed)

**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 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 used to be able to install and configure [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord), but no longer includes this component, as it has been unmaintained for a long time.

The playbook can install and configure [mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord) for you.
You may wish to use the [Mautrix Discord bridge](https://github.com/mautrix/discord) instead.

See the project's [documentation](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/blob/master/README.md) to learn what it does and why it might be useful to you.
## Uninstalling the bridge manually

## Adjusting the playbook configuration
If you still have the MX Puppet Discord bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:

To enable the [Discord](https://discordapp.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:

```yaml
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,start
```

The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
systemctl disable --now matrix-mx-puppet-discord.service

`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.
rm -rf /matrix/mx-puppet-discord

## Usage

To use the bridge, 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).

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.

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 bridged room.

Send `help` to the bot to see the available commands.
/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mx_puppet_discord;'
```

+ 16
- 37
docs/configuring-playbook-bridge-mx-puppet-instagram.md Zobrazit soubor

@@ -1,51 +1,30 @@
<!--
SPDX-FileCopyrightText: 2021 MDAD project contributors
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2020 Hugues Morisset
SPDX-FileCopyrightText: 2020 Tulir Asokan
SPDX-FileCopyrightText: 2021 - 2022 MDAD project contributors
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara

SPDX-License-Identifier: AGPL-3.0-or-later
-->

# Setting up MX Puppet Instagram bridging (optional)
# Setting up MX Puppet Instagram bridging (optional, removed)

The playbook can install and configure [mx-puppet-instagram](https://github.com/Sorunome/mx-puppet-instagram) for you.
🪦 The playbook used to be able to install and configure [mx-puppet-instagram](https://gitlab.com/mx-puppet/instagram/mx-puppet-instagram), but no longer includes this component, as it has been unmaintained for a long time.

This allows you to bridge Instagram DirectMessages into Matrix.
You may wish to use the [Mautrix Meta](https://github.com/mautrix/meta) Messenger/Instagram bridge instead.

## Adjusting the playbook configuration
## Uninstalling the bridge manually

To enable the [Instagram](https://www.instagram.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:
If you still have the MX Puppet Instagram bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:

```yaml
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,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.
systemctl disable --now matrix-mx-puppet-instagram.service

## Usage
rm -rf /matrix/mx-puppet-instagram

To use the bridge, 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).

Send `link <username> <password>` to the bridge bot to link your instagram account.

The `list` commands shows which accounts are linked and which `puppetId` is associated.

For double-puppeting, you probably want to issue these commands:

- `settype $puppetId puppet` to enable puppeting for the link (instead of relaying)
- `setautoinvite $puppetId 1` to automatically invite you to chats
- `setmatrixtoken $accessToken` to set the access token to enable puppeting from the other side (the "double" in double puppeting)

If you are linking only one Instagram account, your `$puppetId` is probably 1, but use the `list` command find out.

Send `help` to the bot to see the available commands. At the time of writing, not every command is fully implemented.
/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mx_puppet_instagram;'
```

+ 1
- 1
docs/configuring-playbook-bridge-mx-puppet-skype.md Zobrazit soubor

@@ -10,4 +10,4 @@ SPDX-License-Identifier: AGPL-3.0-or-later

🪦 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.
The playbook used to be able to install and configure [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) as alternative to this bridge, but no longer includes this component, because Skype has been discontinued since May 2025.

+ 15
- 40
docs/configuring-playbook-bridge-mx-puppet-slack.md Zobrazit soubor

@@ -1,58 +1,33 @@
<!--
SPDX-FileCopyrightText: 2020 - 2023 Slavi Pantaleev
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2020 Rodrigo Belem
SPDX-FileCopyrightText: 2020 Tulir Asokan
SPDX-FileCopyrightText: 2021 Marcel Ackermann
SPDX-FileCopyrightText: 2021 MDAD project contributors
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 Jim Myhrberg
SPDX-FileCopyrightText: 2022 Nikita Chernyi
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara

SPDX-License-Identifier: AGPL-3.0-or-later
-->

# Setting up MX Puppet Slack bridging (optional)
# Setting up MX Puppet Slack bridging (optional, removed)

**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.
🪦 The playbook used to be able to install and configure [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack), but no longer includes this component, as it has been unmaintained for a long time.

The playbook can install and configure [mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack) for you.
You may wish to use the [Mautrix Slack bridge](https://github.com/mautrix/slack) instead.

See the project's [documentation](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/blob/master/README.md) to learn what it does and why it might be useful to you.
## Uninstalling the bridge manually

## Prerequisite
If you still have the MX Puppet Slack bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:

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`.

## Adjusting the playbook configuration

To enable the [Slack](https://slack.com/) bridge, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file:

```yaml
matrix_mx_puppet_slack_enabled: true
# 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_secret: "<SLACK_APP_CLIENT_SECRET>"
```

## 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
```
systemctl disable --now matrix-mx-puppet-slack.service

The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
rm -rf /matrix/mx-puppet-slack

`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

To use the bridge, 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).

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.

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 bridged room.

Send `help` to the bot to see the available commands.
/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mx_puppet_slack;'
```

+ 3
- 3
docs/configuring-playbook-bridge-mx-puppet-steam.md Zobrazit soubor

@@ -11,9 +11,9 @@ SPDX-License-Identifier: AGPL-3.0-or-later

**Note**: This bridge has been deprecated in favor of the [matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge) bridge for Steam, which can be [installed using this playbook](configuring-playbook-bridge-steam.md). Consider using that bridge instead of this one.

The playbook can install and configure [mx-puppet-steam](https://github.com/icewind1991/mx-puppet-steam) for you.
The playbook can install and configure [mx-puppet-steam](https://codeberg.org/icewind/mx-puppet-steam) for you.

See the project's [documentation](https://github.com/icewind1991/mx-puppet-steam/blob/master/README.md) to learn what it does and why it might be useful to you.
See the project's [documentation](https://codeberg.org/icewind/mx-puppet-steam/blob/master/README.md) to learn what it does and why it might be useful to you.

## Adjusting the playbook configuration

@@ -40,7 +40,7 @@ The shortcut commands with the [`just` program](just.md) are also available: `ju

To use the bridge, 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).

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.
Three authentication methods are available, Legacy Token, OAuth and xoxc token. See mx-puppet-steam [documentation](https://codeberg.org/icewind/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.



+ 14
- 42
docs/configuring-playbook-bridge-mx-puppet-twitter.md Zobrazit soubor

@@ -1,57 +1,29 @@
<!--
SPDX-FileCopyrightText: 2019 - 2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2019 Eduardo Beltrame
SPDX-FileCopyrightText: 2020 Tulir Asokan
SPDX-FileCopyrightText: 2021 Slavi Pantaleev
SPDX-FileCopyrightText: 2021 MDAD project contributors
SPDX-FileCopyrightText: 2022 Dennis Ciba
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara

SPDX-License-Identifier: AGPL-3.0-or-later
-->

# Setting up MX Puppet Twitter bridging (optional)
# Setting up MX Puppet Twitter bridging (optional, removed)

**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 used to be able to install and configure [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter), but no longer includes this component, as it has been unmaintained for a long time.

The playbook can install and configure [mx-puppet-twitter](https://github.com/Sorunome/mx-puppet-twitter) for you.
You may wish to use the [Mautrix Twitter bridge](https://github.com/mautrix/twitter) instead.

See the project's [documentation](https://github.com/Sorunome/mx-puppet-twitter/blob/master/README.md) to learn what it does and why it might be useful to you.
## Uninstalling the bridge manually

## Prerequisite
If you still have the MX Puppet Twitter bridge installed on your Matrix server, the playbook can no longer help you uninstall it and you will need to do it manually. To uninstall manually, run these commands on the server:

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
matrix_mx_puppet_twitter_enabled: true
matrix_mx_puppet_twitter_consumer_key: ''
matrix_mx_puppet_twitter_consumer_secret: ''
matrix_mx_puppet_twitter_access_token: ''
matrix_mx_puppet_twitter_access_token_secret: ''
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,start
```
systemctl disable --now matrix-mx-puppet-twitter.service

The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all`
rm -rf /matrix/mx-puppet-twitter

`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

To use the bridge, 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).

To log in, use `link` and click the link.

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 bridged room.

Send `help` to the bot to see the available commands.
/matrix/postgres/bin/cli-non-interactive 'DROP DATABASE matrix_mx_puppet_twitter;'
```

+ 10
- 10
docs/configuring-playbook.md Zobrazit soubor

@@ -174,22 +174,12 @@ Bridges can be used to connect your Matrix installation with third-party communi

- [Setting up matrix-hookshot](configuring-playbook-bridge-hookshot.md) — a bridge between Matrix and multiple project management services, such as [GitHub](https://github.com), [GitLab](https://about.gitlab.com) and [JIRA](https://www.atlassian.com/software/jira).

- [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md)

- [Setting up MX Puppet Instagram bridging](configuring-playbook-bridge-mx-puppet-instagram.md)

- [Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md)

- [Setting up MX Puppet Discord bridging](configuring-playbook-bridge-mx-puppet-discord.md)

- [Setting up MX Puppet GroupMe bridging](configuring-playbook-bridge-mx-puppet-groupme.md)

- [Setting up Steam bridging](configuring-playbook-bridge-steam.md)

- [Setting up MX Puppet Steam bridging](configuring-playbook-bridge-mx-puppet-steam.md)

- [Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md)

- [Setting up Postmoogle email bridging](configuring-playbook-bridge-postmoogle.md)

- [Setting up Matrix SMS bridging](configuring-playbook-bridge-matrix-bridge-sms.md)
@@ -283,10 +273,20 @@ Various services that don't fit any other categories.

- [Setting up Go-NEB](configuring-playbook-bot-go-neb.md) (unmaintained; 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))

- [Setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md) (removed; Skype has been discontinued since May 2025)

- [Setting up matrix-bot-chatgpt](configuring-playbook-bot-chatgpt.md) (unmaintained; the bridge's author suggests taking a look at [baibot](https://github.com/etkecc/baibot) as a replacement, which can also be [installed using this playbook](configuring-playbook-bot-baibot.md))

- [Setting up Mautrix Facebook bridging](configuring-playbook-bridge-mautrix-facebook.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-messenger](configuring-playbook-bridge-mautrix-meta-messenger.md))

- [Setting up Mautrix Instagram bridging](configuring-playbook-bridge-mautrix-instagram.md) (deprecated in favor of the Messenger/Instagram bridge with [mautrix-meta-instagram](configuring-playbook-bridge-mautrix-meta-instagram.md))

- [Setting up MX Puppet Discord bridging](configuring-playbook-bridge-mx-puppet-discord.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Discord bridging](configuring-playbook-bridge-mautrix-discord.md))

- [Setting up MX Puppet Instagram bridging](configuring-playbook-bridge-mx-puppet-instagram.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Instagram bridging via Mautrix Meta](configuring-playbook-bridge-mautrix-meta-instagram.md))

- [Setting up MX Puppet Skype bridging](configuring-playbook-bridge-mx-puppet-skype.md) (removed; this component has been broken for a long time, so it has been removed from the playbook. Consider [setting up Go Skype Bridge bridging](configuring-playbook-bridge-go-skype-bridge.md))

- [Setting up MX Puppet Slack bridging](configuring-playbook-bridge-mx-puppet-slack.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Slack bridging](configuring-playbook-bridge-mautrix-slack.md))

- [Setting up MX Puppet Twitter bridging](configuring-playbook-bridge-mx-puppet-twitter.md) (removed; this component has been unmaintained for a long time, so it has been removed from the playbook. Consider [setting up Mautrix Twitter bridging](configuring-playbook-bridge-mautrix-twitter.md))

+ 4
- 5
docs/container-images.md Zobrazit soubor

@@ -109,11 +109,6 @@ Bridges can be used to connect your Matrix installation with third-party communi
| [matrix-wechat](configuring-playbook-bridge-wechat.md) | [lxduo/matrix-wechat](https://hub.docker.com/r/lxduo/matrix-wechat) | ❌ | Bridge to [WeChat](https://www.wechat.com/) |
| [MatrixZulipBridge](configuring-playbook-bridge-zulip.md) | [GearKite/MatrixZulipBridge](https://ghcr.io/gearkite/matrixzulipbridge) | ❌ | Puppeting appservice bridge for [Zulip](https://zulip.com/) |
| [Heisenbridge](configuring-playbook-bridge-heisenbridge.md) | [hif1/heisenbridge](https://hub.docker.com/r/hif1/heisenbridge) | ❌ | Bouncer-style bridge to [IRC](https://wikipedia.org/wiki/Internet_Relay_Chat) |
| [go-skype-bridge](configuring-playbook-bridge-go-skype-bridge.md) | [nodefyme/go-skype-bridge](https://hub.docker.com/r/nodefyme/go-skype-bridge) | ❌ | Bridge to [Skype](https://www.skype.com) |
| [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) | [mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry) | ❌ | Bridge to [Slack](https://slack.com) |
| [mx-puppet-instagram](configuring-playbook-bridge-mx-puppet-instagram.md) | [sorunome/mx-puppet-instagram](https://hub.docker.com/r/sorunome/mx-puppet-instagram) | ❌ | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) |
| [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) | [sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) |
| [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) | [mx-puppet/discord/mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/container_registry) | ❌ | Bridge to [Discord](https://discordapp.com/) |
| [mx-puppet-groupme](configuring-playbook-bridge-mx-puppet-groupme.md) | [xangelix/mx-puppet-groupme](https://hub.docker.com/r/xangelix/mx-puppet-groupme) | ❌ | Bridge to [GroupMe](https://groupme.com/) |
| [matrix-steam-bridge](configuring-playbook-bridge-steam.md) | [jasonlaguidice/matrix-steam-bridge](https://github.com/jasonlaguidice/matrix-steam-bridge/pkgs/container/matrix-steam-bridge) | ❌ | Bridge to [Steam](https://steampowered.com/) |
| [mx-puppet-steam](configuring-playbook-bridge-mx-puppet-steam.md) | [icewind1991/mx-puppet-steam](https://hub.docker.com/r/icewind1991/mx-puppet-steam) | ❌ | Bridge to [Steam](https://steamapp.com/) |
@@ -187,3 +182,7 @@ The list of the deprecated or unmaintained services is available [here](configur
| [matrix-chatgpt-bot](configuring-playbook-bot-chatgpt.md) | [matrixgpt/matrix-chatgpt-bot](https://ghcr.io/matrixgpt/matrix-chatgpt-bot) | ❌ | Accessing ChatGPT via your favourite Matrix client |
| [mautrix-facebook](configuring-playbook-bridge-mautrix-facebook.md) | [mautrix/facebook](https://mau.dev/mautrix/facebook/container_registry) | ❌ | Bridge to [Facebook](https://facebook.com/) |
| [mautrix-instagram](configuring-playbook-bridge-mautrix-instagram.md) | [mautrix/instagram](https://mau.dev/mautrix/instagram/container_registry) | ❌ | Bridge to [Instagram](https://instagram.com/) |
| [mx-puppet-discord](configuring-playbook-bridge-mx-puppet-discord.md) | [mx-puppet/discord/mx-puppet-discord](https://gitlab.com/mx-puppet/discord/mx-puppet-discord/container_registry) | ❌ | Bridge to [Discord](https://discordapp.com/) |
| [mx-puppet-instagram](configuring-playbook-bridge-mx-puppet-instagram.md) | [sorunome/mx-puppet-instagram](https://hub.docker.com/r/sorunome/mx-puppet-instagram) | ❌ | Bridge for Instagram-DMs ([Instagram](https://www.instagram.com/)) |
| [mx-puppet-slack](configuring-playbook-bridge-mx-puppet-slack.md) | [mx-puppet/slack/mx-puppet-slack](https://gitlab.com/mx-puppet/slack/mx-puppet-slack/container_registry) | ❌ | Bridge to [Slack](https://slack.com) |
| [mx-puppet-twitter](configuring-playbook-bridge-mx-puppet-twitter.md) | [sorunome/mx-puppet-twitter](https://hub.docker.com/r/sorunome/mx-puppet-twitter) | ❌ | Bridge for Twitter-DMs ([Twitter](https://twitter.com/)) |

+ 0
- 357
group_vars/matrix_servers Zobrazit soubor

@@ -110,8 +110,6 @@ matrix_homeserver_container_extra_arguments_auto: |
+
(['--mount type=bind,src=' + matrix_beeper_linkedin_config_path + '/registration.yaml,dst=/matrix-beeper-linkedin-registration.yaml,ro'] if matrix_beeper_linkedin_enabled else [])
+
(['--mount type=bind,src=' + matrix_go_skype_bridge_config_path + '/registration.yaml,dst=/matrix-go-skype-bridge-registration.yaml,ro'] if matrix_go_skype_bridge_enabled else [])
+
(['--mount type=bind,src=' + matrix_wechat_config_path + '/registration.yaml,dst=/matrix-wechat-registration.yaml,ro'] if matrix_wechat_enabled else [])
+
(['--mount type=bind,src=' + matrix_heisenbridge_base_path + '/registration.yaml,dst=/heisenbridge-registration.yaml,ro'] if matrix_heisenbridge_enabled else [])
@@ -150,18 +148,10 @@ matrix_homeserver_container_extra_arguments_auto: |
+
(['--mount type=bind,src=' + matrix_mautrix_wsproxy_config_path + '/imessage-registration.yaml,dst=/matrix-mautrix-imessage-registration.yaml,ro'] if matrix_mautrix_wsproxy_enabled else [])
+
(['--mount type=bind,src=' + matrix_mx_puppet_discord_config_path + '/registration.yaml,dst=/matrix-mx-puppet-discord-registration.yaml,ro'] if matrix_mx_puppet_discord_enabled else [])
+
(['--mount type=bind,src=' + matrix_mx_puppet_groupme_config_path + '/registration.yaml,dst=/matrix-mx-puppet-groupme-registration.yaml,ro'] if matrix_mx_puppet_groupme_enabled else [])
+
(['--mount type=bind,src=' + matrix_mx_puppet_instagram_config_path + '/registration.yaml,dst=/matrix-mx-puppet-instagram-registration.yaml,ro'] if matrix_mx_puppet_instagram_enabled else [])
+
(['--mount type=bind,src=' + matrix_mx_puppet_slack_config_path + '/registration.yaml,dst=/matrix-mx-puppet-slack-registration.yaml,ro'] if matrix_mx_puppet_slack_enabled else [])
+
(['--mount type=bind,src=' + matrix_mx_puppet_steam_config_path + '/registration.yaml,dst=/matrix-mx-puppet-steam-registration.yaml,ro'] if matrix_mx_puppet_steam_enabled else [])
+
(['--mount type=bind,src=' + matrix_mx_puppet_twitter_config_path + '/registration.yaml,dst=/matrix-mx-puppet-twitter-registration.yaml,ro'] if matrix_mx_puppet_twitter_enabled else [])
+
(['--mount type=bind,src=' + matrix_sms_bridge_config_path + '/registration.yaml,dst=/matrix-sms-bridge-registration.yaml,ro'] if matrix_sms_bridge_enabled else [])
+
(['--mount type=bind,src=' + matrix_steam_bridge_config_path + '/registration.yaml,dst=/matrix-steam-bridge-registration.yaml,ro'] if matrix_steam_bridge_enabled else [])
@@ -187,8 +177,6 @@ matrix_homeserver_app_service_config_files_auto: |
+
(['/matrix-beeper-linkedin-registration.yaml'] if matrix_beeper_linkedin_enabled else [])
+
(['/matrix-go-skype-bridge-registration.yaml'] if matrix_go_skype_bridge_enabled else [])
+
(['/matrix-wechat-registration.yaml'] if matrix_wechat_enabled else [])
+
(['/heisenbridge-registration.yaml'] if matrix_heisenbridge_enabled else [])
@@ -227,18 +215,10 @@ matrix_homeserver_app_service_config_files_auto: |
+
(['/matrix-mautrix-imessage-registration.yaml'] if matrix_mautrix_wsproxy_enabled else [])
+
(['/matrix-mx-puppet-discord-registration.yaml'] if matrix_mx_puppet_discord_enabled else [])
+
(['/matrix-mx-puppet-groupme-registration.yaml'] if matrix_mx_puppet_groupme_enabled else [])
+
(['/matrix-mx-puppet-instagram-registration.yaml'] if matrix_mx_puppet_instagram_enabled else [])
+
(['/matrix-mx-puppet-slack-registration.yaml'] if matrix_mx_puppet_slack_enabled else [])
+
(['/matrix-mx-puppet-steam-registration.yaml'] if matrix_mx_puppet_steam_enabled else [])
+
(['/matrix-mx-puppet-twitter-registration.yaml'] if matrix_mx_puppet_twitter_enabled else [])
+
(['/matrix-sms-bridge-registration.yaml'] if matrix_sms_bridge_enabled else [])
+
(['/matrix-cactus-comments.yaml'] if matrix_cactus_comments_enabled else [])
@@ -333,8 +313,6 @@ devture_systemd_service_manager_services_list_auto: |
+
([{'name': 'matrix-beeper-linkedin.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'beeper-linkedin']}] if matrix_beeper_linkedin_enabled else [])
+
([{'name': 'matrix-go-skype-bridge.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'go-skype']}] if matrix_go_skype_bridge_enabled else [])
+
([{'name': 'matrix-wechat.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'wechat']}] if matrix_wechat_enabled else [])
+
([{'name': 'matrix-wechat-agent.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'wechat']}] if matrix_wechat_enabled else [])
@@ -375,18 +353,10 @@ devture_systemd_service_manager_services_list_auto: |
+
([{'name': 'matrix-mautrix-wsproxy-syncproxy.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mautrix-wsproxy-syncproxy']}] if matrix_mautrix_wsproxy_enabled else [])
+
([{'name': 'matrix-mx-puppet-discord.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-discord']}] if matrix_mx_puppet_discord_enabled else [])
+
([{'name': 'matrix-mx-puppet-groupme.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-groupme']}] if matrix_mx_puppet_groupme_enabled else [])
+
([{'name': 'matrix-mx-puppet-instagram.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-instagram']}] if matrix_mx_puppet_instagram_enabled else [])
+
([{'name': 'matrix-mx-puppet-slack.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-slack']}] if matrix_mx_puppet_slack_enabled else [])
+
([{'name': 'matrix-mx-puppet-steam.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-steam']}] if matrix_mx_puppet_steam_enabled else [])
+
([{'name': 'matrix-mx-puppet-twitter.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'mx-puppet-twitter']}] if matrix_mx_puppet_twitter_enabled else [])
+
([{'name': 'matrix-postmoogle.service', 'priority': 2200, 'groups': ['matrix', 'bridges', 'postmoogle']}] if matrix_postmoogle_enabled else [])
+
([{'name': 'matrix-sms-bridge.service', 'priority': 2000, 'groups': ['matrix', 'bridges', 'sms']}] if matrix_sms_bridge_enabled else [])
@@ -1080,56 +1050,6 @@ matrix_beeper_linkedin_database_password: "{{ '%s' | format(matrix_homeserver_ge
#
######################################################################


######################################################################
#
# matrix-bridge-go-skype-bridge
#
######################################################################

# We don't enable bridges by default.
matrix_go_skype_bridge_enabled: false

matrix_go_skype_bridge_systemd_required_services_list_auto: |
{{
matrix_addons_homeserver_systemd_services_list
+
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_go_skype_bridge_database_hostname == postgres_connection_hostname) else [])
}}

matrix_go_skype_bridge_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_go_skype_bridge_docker_image_registry_prefix_upstream_default }}"

matrix_go_skype_bridge_container_image_self_build: "{{ matrix_architecture not in ['amd64', 'arm64'] }}"

matrix_go_skype_bridge_container_network: "{{ matrix_addons_container_network }}"

matrix_go_skype_bridge_container_additional_networks_auto: |-
{{
(
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
+
([postgres_container_network] if (postgres_enabled and matrix_go_skype_bridge_database_hostname == postgres_connection_hostname and matrix_go_skype_bridge_container_network != postgres_container_network) else [])
) | unique
}}

matrix_go_skype_bridge_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'skype.as.token', rounds=655555) | to_uuid }}"

matrix_go_skype_bridge_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
matrix_go_skype_bridge_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'skype.hs.token', rounds=655555) | to_uuid }}"

matrix_go_skype_bridge_login_shared_secret: "{{ matrix_synapse_ext_password_provider_shared_secret_auth_shared_secret if matrix_synapse_ext_password_provider_shared_secret_auth_enabled else '' }}"

# Postgres is the default, except if not using internal Postgres server
matrix_go_skype_bridge_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
matrix_go_skype_bridge_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
matrix_go_skype_bridge_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'goskype.db', rounds=655555) | to_uuid }}"

######################################################################
#
# /matrix-bridge-go-skype-bridge
#
######################################################################

######################################################################
#
# matrix-bridge-mautrix-bluesky
@@ -2425,231 +2345,6 @@ matrix_zulip_bridge_homeserver_url: "{{ matrix_addons_homeserver_client_api_url
#
######################################################################

######################################################################
#
# matrix-bridge-mx-puppet-slack
#
######################################################################

# We don't enable bridges by default.
matrix_mx_puppet_slack_enabled: false

matrix_mx_puppet_slack_hostname: "{{ matrix_server_fqn_matrix }}"

matrix_mx_puppet_slack_systemd_required_services_list_auto: |
{{
matrix_addons_homeserver_systemd_services_list
+
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_slack_database_hostname == postgres_connection_hostname) else [])
}}

matrix_mx_puppet_slack_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_slack_docker_image_registry_prefix_upstream_default }}"

matrix_mx_puppet_slack_container_image_self_build: "{{ matrix_architecture != 'amd64' }}"

matrix_mx_puppet_slack_container_network: "{{ matrix_addons_container_network }}"

matrix_mx_puppet_slack_container_additional_networks_auto: |-
{{
(
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
+
([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_slack_database_hostname == postgres_connection_hostname and matrix_mx_puppet_slack_container_network != postgres_container_network) else [])
+
([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mx_puppet_slack_container_labels_traefik_enabled) else [])
) | unique
}}

matrix_mx_puppet_slack_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}"
matrix_mx_puppet_slack_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
matrix_mx_puppet_slack_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
matrix_mx_puppet_slack_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"

matrix_mx_puppet_slack_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxslk.as.tok', rounds=655555) | to_uuid }}"

matrix_mx_puppet_slack_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
matrix_mx_puppet_slack_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxslk.hs.tok', rounds=655555) | to_uuid }}"

matrix_mx_puppet_slack_login_shared_secret: "{{ matrix_synapse_ext_password_provider_shared_secret_auth_shared_secret if matrix_synapse_ext_password_provider_shared_secret_auth_enabled else '' }}"

matrix_mx_puppet_slack_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}"

# Postgres is the default, except if not using internal Postgres server
matrix_mx_puppet_slack_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
matrix_mx_puppet_slack_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
matrix_mx_puppet_slack_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.slack.db', rounds=655555) | to_uuid }}"

######################################################################
#
# /matrix-bridge-mx-puppet-slack
#
######################################################################

######################################################################
#
# matrix-bridge-mx-puppet-twitter
#
######################################################################

# We don't enable bridges by default.
matrix_mx_puppet_twitter_enabled: false

matrix_mx_puppet_twitter_hostname: "{{ matrix_server_fqn_matrix }}"

matrix_mx_puppet_twitter_systemd_required_services_list_auto: |
{{
matrix_addons_homeserver_systemd_services_list
+
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_twitter_database_hostname == postgres_connection_hostname) else [])
}}

matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream_default }}"

matrix_mx_puppet_twitter_container_image_self_build: "{{ matrix_architecture != 'amd64' }}"

matrix_mx_puppet_twitter_container_http_host_bind_port: "{{ (matrix_playbook_service_host_bind_interface_prefix ~ '' ~ matrix_mx_puppet_twitter_appservice_port) if matrix_playbook_service_host_bind_interface_prefix else '' }}"

matrix_mx_puppet_twitter_container_network: "{{ matrix_addons_container_network }}"

matrix_mx_puppet_twitter_container_additional_networks_auto: |-
{{
(
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
+
([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_twitter_database_hostname == postgres_connection_hostname and matrix_mx_puppet_twitter_container_network != postgres_container_network) else [])
+
([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_playbook_reverse_proxyable_services_additional_network and matrix_mx_puppet_twitter_container_labels_traefik_enabled) else [])
) | unique
}}

matrix_mx_puppet_twitter_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}"
matrix_mx_puppet_twitter_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
matrix_mx_puppet_twitter_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
matrix_mx_puppet_twitter_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"

matrix_mx_puppet_twitter_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxtwt.as.tok', rounds=655555) | to_uuid }}"

matrix_mx_puppet_twitter_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
matrix_mx_puppet_twitter_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxtwt.hs.tok', rounds=655555) | to_uuid }}"

matrix_mx_puppet_twitter_login_shared_secret: "{{ matrix_synapse_ext_password_provider_shared_secret_auth_shared_secret if matrix_synapse_ext_password_provider_shared_secret_auth_enabled else '' }}"

matrix_mx_puppet_twitter_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}"

# Postgres is the default, except if not using internal Postgres server
matrix_mx_puppet_twitter_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
matrix_mx_puppet_twitter_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
matrix_mx_puppet_twitter_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.twitter.db', rounds=655555) | to_uuid }}"

######################################################################
#
# /matrix-bridge-mx-puppet-twitter
#
######################################################################


######################################################################
#
# matrix-bridge-mx-puppet-instagram
#
######################################################################

# We don't enable bridges by default.
matrix_mx_puppet_instagram_enabled: false

matrix_mx_puppet_instagram_systemd_required_services_list_auto: |
{{
matrix_addons_homeserver_systemd_services_list
+
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_instagram_database_hostname == postgres_connection_hostname) else [])
}}

matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream_default }}"

matrix_mx_puppet_instagram_container_image_self_build: "{{ matrix_architecture != 'amd64' }}"

matrix_mx_puppet_instagram_container_network: "{{ matrix_addons_container_network }}"

matrix_mx_puppet_instagram_container_additional_networks_auto: |-
{{
(
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
+
([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_instagram_database_hostname == postgres_connection_hostname and matrix_mx_puppet_instagram_container_network != postgres_container_network) else [])
) | unique
}}

matrix_mx_puppet_instagram_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxig.as.tok', rounds=655555) | to_uuid }}"

matrix_mx_puppet_instagram_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
matrix_mx_puppet_instagram_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxig.hs.tok', rounds=655555) | to_uuid }}"

matrix_mx_puppet_instagram_login_shared_secret: "{{ matrix_synapse_ext_password_provider_shared_secret_auth_shared_secret if matrix_synapse_ext_password_provider_shared_secret_auth_enabled else '' }}"

matrix_mx_puppet_instagram_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}"

# Postgres is the default, except if not using internal Postgres server
matrix_mx_puppet_instagram_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
matrix_mx_puppet_instagram_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
matrix_mx_puppet_instagram_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.ig.db', rounds=655555) | to_uuid }}"

######################################################################
#
# /matrix-bridge-mx-puppet-instagram
#
######################################################################

######################################################################
#
# matrix-bridge-mx-puppet-discord
#
######################################################################

# We don't enable bridges by default.
matrix_mx_puppet_discord_enabled: false

matrix_mx_puppet_discord_systemd_required_services_list_auto: |
{{
matrix_addons_homeserver_systemd_services_list
+
([postgres_identifier ~ '.service'] if (postgres_enabled and matrix_mx_puppet_discord_database_hostname == postgres_connection_hostname) else [])
}}

matrix_mx_puppet_discord_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_mx_puppet_discord_docker_image_registry_prefix_upstream_default }}"

matrix_mx_puppet_discord_container_image_self_build: "{{ matrix_architecture != 'amd64' }}"

matrix_mx_puppet_discord_container_network: "{{ matrix_addons_container_network }}"

matrix_mx_puppet_discord_container_additional_networks_auto: |-
{{
(
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
+
([postgres_container_network] if (postgres_enabled and matrix_mx_puppet_discord_database_hostname == postgres_connection_hostname and matrix_mx_puppet_discord_container_network != postgres_container_network) else [])
) | unique
}}

matrix_mx_puppet_discord_appservice_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxdsc.as.tok', rounds=655555) | to_uuid }}"

matrix_mx_puppet_discord_homeserver_address: "{{ matrix_addons_homeserver_client_api_url }}"
matrix_mx_puppet_discord_homeserver_token: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxdsc.hs.tok', rounds=655555) | to_uuid }}"

matrix_mx_puppet_discord_login_shared_secret: "{{ matrix_synapse_ext_password_provider_shared_secret_auth_shared_secret if matrix_synapse_ext_password_provider_shared_secret_auth_enabled else '' }}"

matrix_mx_puppet_discord_presence_enabled: "{{ matrix_homeserver_implementation != 'synapse' or matrix_synapse_presence_enabled }}"

# Postgres is the default, except if not using internal Postgres server
matrix_mx_puppet_discord_database_engine: "{{ 'postgres' if postgres_enabled else 'sqlite' }}"
matrix_mx_puppet_discord_database_hostname: "{{ postgres_connection_hostname if postgres_enabled else '' }}"
matrix_mx_puppet_discord_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'mxpup.dsc.db', rounds=655555) | to_uuid }}"

######################################################################
#
# /matrix-bridge-mx-puppet-discord
#
######################################################################

######################################################################
#
# matrix-bridge-mx-puppet-steam
@@ -4406,12 +4101,6 @@ postgres_managed_databases_auto: |
'password': matrix_beeper_linkedin_database_password,
}] if (matrix_beeper_linkedin_enabled and matrix_beeper_linkedin_database_engine == 'postgres' and matrix_beeper_linkedin_database_hostname == postgres_connection_hostname) else [])
+
([{
'name': matrix_go_skype_bridge_database_name,
'username': matrix_go_skype_bridge_database_username,
'password': matrix_go_skype_bridge_database_password,
}] if (matrix_go_skype_bridge_enabled and matrix_go_skype_bridge_database_engine == 'postgres' and matrix_go_skype_bridge_database_hostname == postgres_connection_hostname) else [])
+
([{
'name': matrix_wechat_database_name,
'username': matrix_wechat_database_username,
@@ -4502,30 +4191,6 @@ postgres_managed_databases_auto: |
'password': matrix_mautrix_slack_database_password,
}] if (matrix_mautrix_slack_enabled and matrix_mautrix_slack_database_engine == 'postgres' and matrix_mautrix_slack_database_hostname == postgres_connection_hostname) else [])
+
([{
'name': matrix_mx_puppet_slack_database_name,
'username': matrix_mx_puppet_slack_database_username,
'password': matrix_mx_puppet_slack_database_password,
}] if (matrix_mx_puppet_slack_enabled and matrix_mx_puppet_slack_database_engine == 'postgres' and matrix_mx_puppet_slack_database_hostname == postgres_connection_hostname) else [])
+
([{
'name': matrix_mx_puppet_twitter_database_name,
'username': matrix_mx_puppet_twitter_database_username,
'password': matrix_mx_puppet_twitter_database_password,
}] if (matrix_mx_puppet_twitter_enabled and matrix_mx_puppet_twitter_database_engine == 'postgres' and matrix_mx_puppet_twitter_database_hostname == postgres_connection_hostname) else [])
+
([{
'name': matrix_mx_puppet_instagram_database_name,
'username': matrix_mx_puppet_instagram_database_username,
'password': matrix_mx_puppet_instagram_database_password,
}] if (matrix_mx_puppet_instagram_enabled and matrix_mx_puppet_instagram_database_engine == 'postgres' and matrix_mx_puppet_instagram_database_hostname == postgres_connection_hostname) else [])
+
([{
'name': matrix_mx_puppet_discord_database_name,
'username': matrix_mx_puppet_discord_database_username,
'password': matrix_mx_puppet_discord_database_password,
}] if (matrix_mx_puppet_discord_enabled and matrix_mx_puppet_discord_database_engine == 'postgres' and matrix_mx_puppet_discord_database_hostname == postgres_connection_hostname) else [])
+
([{
'name': matrix_mx_puppet_steam_database_name,
'username': matrix_mx_puppet_steam_database_username,
@@ -5339,11 +5004,6 @@ matrix_synapse_admin_config_asManagedUsers_auto: |
'^@linkedin_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_beeper_linkedin_enabled else [])
+
([
'^@'+(matrix_go_skype_bridge_appservice_bot_username | default('') | regex_escape)+':'+(matrix_domain | regex_escape)+'$',
'^@skype_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_go_skype_bridge_enabled else [])
+
([
'^@heisenbridge:'+(matrix_domain | regex_escape)+'$',
'^@hbirc_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
@@ -5432,31 +5092,14 @@ matrix_synapse_admin_config_asManagedUsers_auto: |
'^@imessage_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_mautrix_wsproxy_enabled else [])
+
([
'^@_discordpuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_mx_puppet_discord_enabled else [])
+
([
'^@_groupmepuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_mx_puppet_groupme_enabled else [])
+
([
'^@_instagrampuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_mx_puppet_instagram_enabled else [])
+
([
'^@_slackpuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_mx_puppet_slack_enabled else [])
+
([
'^@_steampuppet_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_mx_puppet_steam_enabled else [])
+
([
'^@'+(matrix_mx_puppet_twitter_bot_localpart | default('') | regex_escape)+':'+ (matrix_domain | regex_escape)+'$',
'^@'+(matrix_mx_puppet_twitter_namespace_prefix | default('') | regex_escape)+'[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',
] if matrix_mx_puppet_twitter_enabled else [])
+
([
'^@smsbot:'+(matrix_domain | regex_escape)+'$',
'^@sms_[a-zA-Z0-9]+:'+(matrix_domain | regex_escape)+'$',


+ 1
- 1
i18n/requirements.txt Zobrazit soubor

@@ -3,7 +3,7 @@ babel==2.17.0
certifi==2025.10.5
charset-normalizer==3.4.4
click==8.3.0
docutils==0.22.2
docutils==0.22.3
idna==3.11
imagesize==1.4.1
Jinja2==3.1.6


+ 10
- 10
requirements.yml Zobrazit soubor

@@ -4,10 +4,10 @@
version: v1.0.0-5
name: auxiliary
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-backup_borg.git
version: v1.4.2-2.0.10-0
version: v1.4.2-2.0.11-0
name: backup_borg
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-container-socket-proxy.git
version: v0.4.1-1
version: v0.4.1-2
name: container_socket_proxy
- src: git+https://github.com/geerlingguy/ansible-role-docker
version: 7.8.0
@@ -16,22 +16,22 @@
version: 129c8590e106b83e6f4c259649a613c6279e937a
name: docker_sdk_for_python
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-etherpad.git
version: v2.5.2-0
version: v2.5.2-1
name: etherpad
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-exim-relay.git
version: v4.98.1-r0-2-2
name: exim_relay
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-grafana.git
version: v11.6.5-3
version: v11.6.5-4
name: grafana
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-jitsi.git
version: v10590-0
name: jitsi
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-livekit-server.git
version: v1.9.2-0
version: v1.9.3-0
name: livekit_server
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-ntfy.git
version: v2.14.0-2
version: v2.14.0-3
name: ntfy
- src: git+https://github.com/devture/com.devture.ansible.role.playbook_help.git
version: 7663e3114513e56f28d3ed762059b445c678a71a
@@ -49,13 +49,13 @@
version: v18-0
name: postgres_backup
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus.git
version: v3.7.3-0
version: v3.7.3-1
name: prometheus
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-node-exporter.git
version: v1.9.1-11
version: v1.9.1-12
name: prometheus_node_exporter
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-prometheus-postgres-exporter.git
version: v0.18.1-0
version: v0.18.1-1
name: prometheus_postgres_exporter
- src: git+https://github.com/devture/com.devture.ansible.role.systemd_docker_base.git
version: v1.4.1-0
@@ -67,7 +67,7 @@
version: v1.1.0-0
name: timesync
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik.git
version: v3.5.4-0
version: v3.5.4-1
name: traefik
- src: git+https://github.com/mother-of-all-self-hosting/ansible-role-traefik-certs-dumper.git
version: v2.10.0-2


+ 1
- 1
roles/custom/matrix-alertmanager-receiver/defaults/main.yml Zobrazit soubor

@@ -11,7 +11,7 @@
matrix_alertmanager_receiver_enabled: true

# renovate: datasource=docker depName=docker.io/metio/matrix-alertmanager-receiver
matrix_alertmanager_receiver_version: 2025.10.22
matrix_alertmanager_receiver_version: 2025.11.5

matrix_alertmanager_receiver_scheme: https



+ 0
- 164
roles/custom/matrix-bridge-go-skype-bridge/defaults/main.yml Zobrazit soubor

@@ -1,164 +0,0 @@
# SPDX-FileCopyrightText: 2022 - 2023 Nikita Chernyi
# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 - 2025 MDAD project contributors
# SPDX-FileCopyrightText: 2022 Arthur Brugière
# SPDX-FileCopyrightText: 2022 Vladimir Panteleev
# SPDX-FileCopyrightText: 2023 Samuel Meenzen
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---
# Go Skype Bridge is a Matrix <-> Skype bridge
# Project source code URL: https://github.com/kelaresg/go-skype-bridge

matrix_go_skype_bridge_enabled: true

matrix_go_skype_bridge_container_image_self_build: false
matrix_go_skype_bridge_container_image_self_build_repo: "https://github.com/kelaresg/go-skype-bridge.git"
matrix_go_skype_bridge_container_image_self_build_branch: "{{ 'master' if matrix_go_skype_bridge_version == 'latest' else matrix_go_skype_bridge_version }}"

# renovate: datasource=docker depName=nodefyme/go-skype-bridge
matrix_go_skype_bridge_version: latest
matrix_go_skype_bridge_docker_image: "{{ matrix_go_skype_bridge_docker_image_registry_prefix }}nodefyme/go-skype-bridge:{{ matrix_go_skype_bridge_version }}"
matrix_go_skype_bridge_docker_image_registry_prefix: "{{ 'localhost/' if matrix_go_skype_bridge_container_image_self_build else matrix_go_skype_bridge_docker_image_registry_prefix_upstream }}"
matrix_go_skype_bridge_docker_image_registry_prefix_upstream: "{{ matrix_go_skype_bridge_docker_image_registry_prefix_upstream_default }}"
matrix_go_skype_bridge_docker_image_registry_prefix_upstream_default: "docker.io/"
matrix_go_skype_bridge_docker_image_force_pull: "{{ matrix_go_skype_bridge_docker_image.endswith(':latest') }}"

matrix_go_skype_bridge_base_path: "{{ matrix_base_data_path }}/go-skype-bridge"
matrix_go_skype_bridge_config_path: "{{ matrix_go_skype_bridge_base_path }}/config"
matrix_go_skype_bridge_data_path: "{{ matrix_go_skype_bridge_base_path }}/data"
matrix_go_skype_bridge_docker_src_files_path: "{{ matrix_go_skype_bridge_base_path }}/docker-src"

matrix_go_skype_bridge_homeserver_address: ""
matrix_go_skype_bridge_homeserver_domain: "{{ matrix_domain }}"
matrix_go_skype_bridge_appservice_address: 'http://matrix-go-skype-bridge:8080'

matrix_go_skype_bridge_container_network: ""

matrix_go_skype_bridge_container_additional_networks: "{{ matrix_go_skype_bridge_container_additional_networks_auto + matrix_go_skype_bridge_container_additional_networks_custom }}"
matrix_go_skype_bridge_container_additional_networks_auto: []
matrix_go_skype_bridge_container_additional_networks_custom: []

# A list of extra arguments to pass to the container
matrix_go_skype_bridge_container_extra_arguments: []

# List of systemd services that matrix-go-skype-bridge.service depends on.
matrix_go_skype_bridge_systemd_required_services_list: "{{ matrix_go_skype_bridge_systemd_required_services_list_default + matrix_go_skype_bridge_systemd_required_services_list_auto + matrix_go_skype_bridge_systemd_required_services_list_custom }}"
matrix_go_skype_bridge_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_go_skype_bridge_systemd_required_services_list_auto: []
matrix_go_skype_bridge_systemd_required_services_list_custom: []

# List of systemd services that matrix-go-skype-bridge.service wants
matrix_go_skype_bridge_systemd_wanted_services_list: []

matrix_go_skype_bridge_appservice_token: ''
matrix_go_skype_bridge_homeserver_token: ''

matrix_go_skype_bridge_appservice_bot_username: skypebridgebot

matrix_go_skype_bridge_command_prefix: "!skype"

# Whether or not created rooms should have federation enabled.
# If false, created portal rooms will never be federated.
matrix_go_skype_bridge_federate_rooms: true

# Database-related configuration fields.
#
# To use SQLite, stick to these defaults.
#
# To use Postgres:
# - change the engine (`matrix_go_skype_bridge_database_engine: 'postgres'`)
# - adjust your database credentials via the `matrix_go_skype_bridge_database_*` variables
matrix_go_skype_bridge_database_engine: 'sqlite'

matrix_go_skype_bridge_sqlite_database_path_local: "{{ matrix_go_skype_bridge_data_path }}/go-skype-bridge.db"
matrix_go_skype_bridge_sqlite_database_path_in_container: "/data/go-skype-bridge.db"

matrix_go_skype_bridge_database_username: 'matrix_go_skype_bridge'
matrix_go_skype_bridge_database_password: 'some-password'
matrix_go_skype_bridge_database_hostname: ''
matrix_go_skype_bridge_database_port: 5432
matrix_go_skype_bridge_database_name: 'matrix_go_skype_bridge'
matrix_go_skype_bridge_database_sslmode: disable

matrix_go_skype_bridge_database_connection_string: 'postgresql://{{ matrix_go_skype_bridge_database_username }}:{{ matrix_go_skype_bridge_database_password }}@{{ matrix_go_skype_bridge_database_hostname }}:{{ matrix_go_skype_bridge_database_port }}/{{ matrix_go_skype_bridge_database_name }}?sslmode={{ matrix_go_skype_bridge_database_sslmode }}'

matrix_go_skype_bridge_appservice_database_type: "{{
{
'sqlite': 'sqlite3',
'postgres':'postgres',
}[matrix_go_skype_bridge_database_engine]
}}"

matrix_go_skype_bridge_appservice_database_uri: "{{
{
'sqlite': matrix_go_skype_bridge_sqlite_database_path_in_container,
'postgres': matrix_go_skype_bridge_database_connection_string,
}[matrix_go_skype_bridge_database_engine]
}}"

# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth).
matrix_go_skype_bridge_login_shared_secret: ''
matrix_go_skype_bridge_bridge_login_shared_secret_map:
"{{ {matrix_go_skype_bridge_homeserver_domain: matrix_go_skype_bridge_login_shared_secret} if matrix_go_skype_bridge_login_shared_secret else {} }}"

# Servers to always allow double puppeting from
matrix_go_skype_bridge_bridge_double_puppet_server_map:
"{{ matrix_go_skype_bridge_homeserver_domain: matrix_go_skype_bridge_homeserver_address }}"

# Enable End-to-bridge encryption
matrix_go_skype_bridge_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}"
matrix_go_skype_bridge_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}"

# Minimum severity of journal log messages.
# Valid values: fatal, error, warn, info, debug
matrix_go_skype_bridge_log_level: 'warn'

matrix_go_skype_bridge_bridge_permissions: |
{{
{matrix_go_skype_bridge_homeserver_domain: 'user'}
| combine({matrix_admin: 'admin'} if matrix_admin else {})
}}

# Default go-skype-bridge configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it.
#
# For a more advanced customization, you can extend the default (see `matrix_go_skype_bridge_configuration_extension_yaml`)
# or completely replace this variable with your own template.
matrix_go_skype_bridge_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"

matrix_go_skype_bridge_configuration_extension_yaml: |
# Your custom YAML configuration goes here.
# This configuration extends the default starting configuration (`matrix_go_skype_bridge_configuration_yaml`).
#
# You can override individual variables from the default configuration, or introduce new ones.
#
# If you need something more special, you can take full control by
# completely redefining `matrix_go_skype_bridge_configuration_yaml`.

matrix_go_skype_bridge_configuration_extension: "{{ matrix_go_skype_bridge_configuration_extension_yaml | from_yaml if matrix_go_skype_bridge_configuration_extension_yaml | from_yaml is mapping else {} }}"

# Holds the final configuration (a combination of the default and its extension).
# You most likely don't need to touch this variable. Instead, see `matrix_go_skype_bridge_configuration_yaml`.
matrix_go_skype_bridge_configuration: "{{ matrix_go_skype_bridge_configuration_yaml | from_yaml | combine(matrix_go_skype_bridge_configuration_extension, recursive=True) }}"

matrix_go_skype_bridge_registration_yaml: |
id: skype
url: {{ matrix_go_skype_bridge_appservice_address }}
as_token: "{{ matrix_go_skype_bridge_appservice_token }}"
hs_token: "{{ matrix_go_skype_bridge_homeserver_token }}"
# See https://github.com/mautrix/signal/issues/43
sender_localpart: _bot_{{ matrix_go_skype_bridge_appservice_bot_username }}
rate_limited: false
namespaces:
users:
- regex: '^@skype-(.*):{{ matrix_go_skype_bridge_homeserver_domain | regex_escape }}$'
exclusive: true
- exclusive: true
regex: '^@{{ matrix_go_skype_bridge_appservice_bot_username | regex_escape }}:{{ matrix_go_skype_bridge_homeserver_domain | regex_escape }}$'
de.sorunome.msc2409.push_ephemeral: true
receive_ephemeral: true

matrix_go_skype_bridge_registration: "{{ matrix_go_skype_bridge_registration_yaml | from_yaml }}"

+ 0
- 25
roles/custom/matrix-bridge-go-skype-bridge/tasks/main.yml Zobrazit soubor

@@ -1,25 +0,0 @@
# SPDX-FileCopyrightText: 2019 - 2023 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Vladimir Panteleev
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- tags:
- setup-all
- setup-go-skype-bridge
- install-all
- install-go-skype-bridge
block:
- when: matrix_go_skype_bridge_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"

- when: matrix_go_skype_bridge_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml"

- tags:
- setup-all
- setup-go-skype-bridge
block:
- when: not matrix_go_skype_bridge_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"

+ 0
- 155
roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_install.yml Zobrazit soubor

@@ -1,155 +0,0 @@
# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Sebastian Gumprich
# SPDX-FileCopyrightText: 2022 Vladimir Panteleev
# SPDX-FileCopyrightText: 2024 David Mehren
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- ansible.builtin.set_fact:
matrix_go_skype_bridge_requires_restart: false

- when: "matrix_go_skype_bridge_database_engine == 'postgres'"
block:
- name: Check if an SQLite database already exists
ansible.builtin.stat:
path: "{{ matrix_go_skype_bridge_sqlite_database_path_local }}"
register: matrix_go_skype_bridge_sqlite_database_path_local_stat_result

- when: "matrix_go_skype_bridge_sqlite_database_path_local_stat_result.stat.exists | bool"
block:
- ansible.builtin.include_role:
name: galaxy/postgres
tasks_from: migrate_db_to_postgres
vars:
postgres_db_migration_request:
src: "{{ matrix_go_skype_bridge_sqlite_database_path_local }}"
dst: "{{ matrix_go_skype_bridge_database_connection_string }}"
caller: "{{ role_path | basename }}"
engine_variable_name: 'matrix_go_skype_bridge_database_engine'
engine_old: 'sqlite'
systemd_services_to_stop: ['matrix-go-skype-bridge.service']
pgloader_options: ['--with "quote identifiers"']

- ansible.builtin.set_fact:
matrix_go_skype_bridge_requires_restart: true

- name: Ensure Go Skype Bridge paths exists
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: 0750
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- {path: "{{ matrix_go_skype_bridge_base_path }}", when: true}
- {path: "{{ matrix_go_skype_bridge_config_path }}", when: true}
- {path: "{{ matrix_go_skype_bridge_data_path }}", when: true}
- {path: "{{ matrix_go_skype_bridge_docker_src_files_path }}", when: "{{ matrix_go_skype_bridge_container_image_self_build }}"}
when: item.when | bool

- name: Ensure Go Skype Bridge image is pulled
community.docker.docker_image:
name: "{{ matrix_go_skype_bridge_docker_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_go_skype_bridge_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_go_skype_bridge_docker_image_force_pull }}"
when: not matrix_go_skype_bridge_container_image_self_build
register: result
retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}"
until: result is not failed

- name: Ensure Go Skype Bridge repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_go_skype_bridge_container_image_self_build_repo }}"
dest: "{{ matrix_go_skype_bridge_docker_src_files_path }}"
version: "{{ matrix_go_skype_bridge_container_image_self_build_branch }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
register: matrix_go_skype_bridge_git_pull_results
when: "matrix_go_skype_bridge_container_image_self_build | bool"

- name: Ensure Go Skype Bridge Docker image is built
community.docker.docker_image:
name: "{{ matrix_go_skype_bridge_docker_image }}"
source: build
force_source: "{{ matrix_go_skype_bridge_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_go_skype_bridge_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_go_skype_bridge_docker_src_files_path }}"
pull: true
when: "matrix_go_skype_bridge_container_image_self_build | bool"

- name: Check if an old database file exists
ansible.builtin.stat:
path: "{{ matrix_go_skype_bridge_base_path }}/go-skype-bridge.db"
register: matrix_go_skype_bridge_stat_database

- name: Check if an old Matrix state file exists
ansible.builtin.stat:
path: "{{ matrix_go_skype_bridge_base_path }}/mx-state.json"
register: matrix_go_skype_bridge_stat_mx_state

- name: (Data relocation) Ensure matrix-go-skype-bridge.service is stopped
ansible.builtin.service:
name: matrix-go-skype-bridge
state: stopped
enabled: false
daemon_reload: true
failed_when: false
when: "matrix_go_skype_bridge_stat_database.stat.exists"

- name: (Data relocation) Move go-skype-bridge database file to ./data directory
ansible.builtin.command:
cmd: "mv {{ matrix_go_skype_bridge_base_path }}/go-skype-bridge.db {{ matrix_go_skype_bridge_data_path }}/go-skype-bridge.db"
creates: "{{ matrix_go_skype_bridge_data_path }}/go-skype-bridge.db"
removes: "{{ matrix_go_skype_bridge_base_path }}/go-skype-bridge.db"
when: "matrix_go_skype_bridge_stat_database.stat.exists"

- name: (Data relocation) Move go-skype-bridge mx-state file to ./data directory
ansible.builtin.command:
cmd: "mv {{ matrix_go_skype_bridge_base_path }}/mx-state.json {{ matrix_go_skype_bridge_data_path }}/mx-state.json"
creates: "{{ matrix_go_skype_bridge_data_path }}/mx-state.json"
removes: "{{ matrix_go_skype_bridge_base_path }}/mx-state.json"
when: "matrix_go_skype_bridge_stat_mx_state.stat.exists"

- name: Ensure go-skype-bridge config.yaml installed
ansible.builtin.copy:
content: "{{ matrix_go_skype_bridge_configuration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_go_skype_bridge_config_path }}/config.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure go-skype-bridge registration.yaml installed
ansible.builtin.copy:
content: "{{ matrix_go_skype_bridge_registration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_go_skype_bridge_config_path }}/registration.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure matrix-go-skype-bridge container network is created
community.general.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_go_skype_bridge_container_network }}"
driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"

- name: Ensure matrix-go-skype-bridge.service installed
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-go-skype-bridge.service.j2"
dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-go-skype-bridge.service"
mode: 0644
register: matrix_go_skype_bridge_systemd_service_result

- name: Ensure matrix-go-skype-bridge.service restarted, if necessary
ansible.builtin.service:
name: "matrix-go-skype-bridge.service"
state: restarted
daemon_reload: true
when: "matrix_go_skype_bridge_requires_restart | bool"

+ 0
- 25
roles/custom/matrix-bridge-go-skype-bridge/tasks/setup_uninstall.yml Zobrazit soubor

@@ -1,25 +0,0 @@
# SPDX-FileCopyrightText: 2022 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Vladimir Panteleev
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Check existence of matrix-go-skype-bridge service
ansible.builtin.stat:
path: "/etc/systemd/system/matrix-go-skype-bridge.service"
register: matrix_go_skype_bridge_service_stat

- when: matrix_go_skype_bridge_service_stat.stat.exists | bool
block:
- name: Ensure matrix-go-skype-bridge is stopped
ansible.builtin.service:
name: matrix-go-skype-bridge
state: stopped
enabled: false
daemon_reload: true

- name: Ensure matrix-go-skype-bridge.service doesn't exist
ansible.builtin.file:
path: "/etc/systemd/system/matrix-go-skype-bridge.service"
state: absent

+ 0
- 28
roles/custom/matrix-bridge-go-skype-bridge/tasks/validate_config.yml Zobrazit soubor

@@ -1,28 +0,0 @@
# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Vladimir Panteleev
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Fail if required go-skype-bridge settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items:
- {'name': 'matrix_go_skype_bridge_appservice_token', when: true}
- {'name': 'matrix_go_skype_bridge_homeserver_address', when: true}
- {'name': 'matrix_go_skype_bridge_homeserver_token', when: true}
- {'name': 'matrix_go_skype_bridge_database_hostname', when: "{{ matrix_go_skype_bridge_database_engine == 'postgres' }}"}
- {'name': 'matrix_go_skype_bridge_container_network', when: true}

- name: (Deprecation) Catch and report renamed go-skype-bridge variables
ansible.builtin.fail:
msg: >-
Your configuration contains a variable, which now has a different name.
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_go_skype_bridge_docker_image_name_prefix', 'new': 'matrix_go_skype_bridge_docker_image_registry_prefix'}

+ 0
- 237
roles/custom/matrix-bridge-go-skype-bridge/templates/config.yaml.j2 Zobrazit soubor

@@ -1,237 +0,0 @@
#jinja2: lstrip_blocks: True
# Homeserver details.
homeserver:
# The address that this appservice can use to connect to the homeserver.
address: {{ matrix_go_skype_bridge_homeserver_address }}
# The domain of the homeserver (for MXIDs, etc).
domain: {{ matrix_go_skype_bridge_homeserver_domain }}
# If you don’t know what this is, no need to modify(for parse "mention user/reply message, etc")
server_name: matrix.to

# Application service host/registration related details.
# Changing these values requires regeneration of the registration.
appservice:
# The address that the homeserver can use to connect to this appservice.
address: {{ matrix_go_skype_bridge_appservice_address }}

# The hostname and port where this appservice should listen.
hostname: 0.0.0.0
port: 8080

# Database config.
database:
# The database type. "sqlite3" and "postgres" are supported.
type: {{ matrix_go_skype_bridge_appservice_database_type|to_json }}
# The database URI.
# SQLite: File name is enough. https://github.com/mattn/go-sqlite3#connection-string
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
uri: {{ matrix_go_skype_bridge_appservice_database_uri|to_json }}
# Maximum number of connections. Mostly relevant for Postgres.
max_open_conns: 20
max_idle_conns: 2

# Settings for provisioning API
provisioning:
# Prefix for the provisioning API paths.
prefix: /_matrix/provision/v1
# Shared secret for authentication. If set to "disable", the provisioning API will be disabled.
shared_secret: disable

# The unique ID of this appservice.
id: skype
# Appservice bot details.
bot:
# Username of the appservice bot.
username: skypebridgebot
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
# to leave display name/avatar as-is.
displayname: Skype bridge bot
avatar: mxc://matrix.org/kGQUDQyPiwbRXPFkjoBrPyhC

# Authentication tokens for AS <-> HS communication. Autogenerated; do not modify.
as_token: "{{ matrix_go_skype_bridge_appservice_token }}"
hs_token: "{{ matrix_go_skype_bridge_homeserver_token }}"

# Bridge config
bridge:
# Localpart template of MXIDs for Skype users.
# {{ '{{.}}' }} is replaced with the phone number of the Skype user.
username_template: {{ 'skype-{{.}}' }}
# Displayname template for Skype users.
# {{ '{{.Notify}}' }} - nickname set by the Skype user
# {{ '{{.Jid}}' }} - phone number (international format)
# The following variables are also available, but will cause problems on multi-user instances:
# {{ '{{.Name}}' }} - display name from contact list
# {{ '{{.Short}}' }} - short display name from contact list
# To use multiple if's, you need to use: {{ '{{else if .Name}}' }}, for example:
# "{{ '{{if .Notify}}' }}{{ '{{.Notify}}' }}{{ '{{else if .Name}}' }}{{ '{{.Name}}' }}{{ '{{else}}' }}{{ '{{.Jid}}' }}{{ '{{end}}' }} (WA)"
displayname_template: "{{ '{{if .DisplayName}}' }}{{ '{{.DisplayName}}' }}{{ '{{else}}' }}{{ '{{.PersonId}}' }}{{ '{{end}}' }} (Skype)"
# Localpart template for per-user room grouping community IDs.
# On startup, the bridge will try to create these communities, add all of the specific user's
# portals to the community, and invite the Matrix user to it.
# (Note that, by default, non-admins might not have your homeserver's permission to create
# communities.)
# {{ '{{.Localpart}}' }} is the MXID localpart and {{ '{{.Server}}' }} is the MXID server part of the user.
community_template: skype-{{ '{{.Localpart}}' }}={{ '{{.Server}}' }}

# Skype connection timeout in seconds.
connection_timeout: 20
# If Skype doesn't respond within connection_timeout, should the bridge try to fetch the message
# to see if it was actually bridged? Use this if you have problems with sends timing out but actually
# succeeding.
fetch_message_on_timeout: false
# Whether or not the bridge should send a read receipt from the bridge bot when a message has been
# sent to Skype. If fetch_message_on_timeout is enabled, a successful post-timeout fetch will
# trigger a read receipt too.
delivery_receipts: false
# Number of times to regenerate QR code when logging in.
# The regenerated QR code is sent as an edit and essentially multiplies the login timeout (20 seconds)
login_qr_regen_count: 2
# Maximum number of times to retry connecting on connection error.
max_connection_attempts: 3
# Number of seconds to wait between connection attempts.
# Negative numbers are exponential backoff: -connection_retry_delay + 1 + 2^attempts
connection_retry_delay: -1
# Whether or not the bridge should send a notice to the user's management room when it retries connecting.
# If false, it will only report when it stops retrying.
report_connection_retry: true
# Maximum number of seconds to wait for chats to be sent at startup.
# If this is too low and you have lots of chats, it could cause backfilling to fail.
chat_list_wait: 30
# Maximum number of seconds to wait to sync portals before force unlocking message processing.
# If this is too low and you have lots of chats, it could cause backfilling to fail.
portal_sync_wait: 600

# Whether or not to send call start/end notices to Matrix.
call_notices:
start: true
end: true

# Number of chats to sync for new users.
# Since some of the obtained conversations are not the conversations that the user needs to see,
# the actual number of conversations displayed on the Matrix client will be slightly less than the set value
initial_chat_sync_count: 10
# Number of old messages to fill when creating new portal rooms.
initial_history_fill_count: 20
# Whether or not notifications should be turned off while filling initial history.
# Only applicable when using double puppeting.
initial_history_disable_notifications: false
# Maximum number of chats to sync when recovering from downtime.
# Set to -1 to sync all new chats during downtime.
recovery_chat_sync_limit: -1
# Whether or not to sync history when recovering from downtime.
recovery_history_backfill: true
# Maximum number of seconds since last message in chat to skip
# syncing the chat in any case. This setting will take priority
# over both recovery_chat_sync_limit and initial_chat_sync_count.
# Default is 3 days = 259200 seconds
sync_max_chat_age: 259200

# sync contact, Non-martix-standard parameter, defaults to false
sync_contact: false

# Whether or not to sync with custom puppets to receive EDUs that
# are not normally sent to appservices.
sync_with_custom_puppets: true

# Servers to always allow double puppeting from
double_puppet_server_map:
"{{ matrix_go_skype_bridge_homeserver_domain }}": {{ matrix_go_skype_bridge_homeserver_address }}
# Allow using double puppeting from any server with a valid client .well-known file.
double_puppet_allow_discovery: false
# Shared secret for https://github.com/devture/matrix-synapse-shared-secret-auth
#
# If set, custom puppets will be enabled automatically for local users
# instead of users having to find an access token and run `login-matrix`
# manually.
login_shared_secret_map: {{ matrix_go_skype_bridge_bridge_login_shared_secret_map|to_json }}

# Whether or not to invite own Skype user's Matrix puppet into private
# chat portals when backfilling if needed.
# This always uses the default puppet instead of custom puppets due to
# rate limits and timestamp massaging.
invite_own_puppet_for_backfilling: true
# Whether or not to explicitly set the avatar and room name for private
# chat portal rooms. This can be useful if the previous field works fine,
# but causes room avatar/name bugs.
private_chat_portal_meta: true

# Whether or not thumbnails from Skype should be sent.
# They're disabled by default due to very low resolution.
Skype_thumbnail: false

# Allow invite permission for user. User can invite any bots to room with Skype
# users (private chat and groups)
allow_user_invite: false

# The prefix for commands. Only required in non-management rooms.
command_prefix: "{{ matrix_go_skype_bridge_command_prefix }}"

# End-to-bridge encryption support options. This requires login_shared_secret to be configured
# in order to get a device for the bridge bot.
#
# Additionally, https://github.com/matrix-org/synapse/pull/5758 is required if using a normal
# application service.
encryption:
# Allow encryption, work in group chat rooms with e2ee enabled
allow: {{ matrix_go_skype_bridge_bridge_encryption_allow|to_json }}
# Default to encryption, force-enable encryption in all portals the bridge creates
# This will cause the bridge bot to be in private chats for the encryption to work properly.
# It is recommended to also set private_chat_portal_meta to true when using this.
default: {{ matrix_go_skype_bridge_bridge_encryption_default|to_json }}

puppet_id:
# when set to true, the matrixid of the contact (puppet) from the bridge to the Matrix will be encrypted into another string
allow: false
# 8 characters
key: '12dsf323'
# Use the username_template prefix. (Warning: At present, username_template cannot be too complicated, otherwise this function may cause unknown errors)
username_template_prefix: 'skype-'

# Permissions for using the bridge.
# Permitted values:
# relaybot - Talk through the relaybot (if enabled), no access otherwise
# user - Access to use the bridge to chat with a Skype account.
# admin - User level and some additional administration tools
# Permitted keys:
# * - All Matrix users
# domain - All users on that homeserver
# mxid - Specific user
permissions: {{ matrix_go_skype_bridge_bridge_permissions|to_json }}

relaybot:
# Whether or not relaybot support is enabled.
enabled: false
# The management room for the bot. This is where all status notifications are posted and
# in this room, you can use `!wa <command>` instead of `!wa relaybot <command>`. Omitting
# the command prefix completely like in user management rooms is not possible.
management: '!qporfwt:example.com'
# List of users to invite to all created rooms that include the relaybot.
invites: []
# The formats to use when sending messages to Skype via the relaybot.
message_formats:
m.text: "<b>{{ '{{ .Sender.Displayname }}' }}</b>: {{ '{{ .Message }}' }}"
m.notice: "<b>{{ '{{ .Sender.Displayname }}' }}</b>:: {{ '{{ .Message }}' }}"
m.emote: "* <b>{{ '{{ .Sender.Displayname }}' }}</b>: {{ '{{ .Message }}' }}"
m.file: "<b>{{ '{{ .Sender.Displayname }}' }}</b>: sent a file"
m.image: "<b>{{ '{{ .Sender.Displayname }}' }}</b>: sent an image"
m.audio: "<b>{{ '{{ .Sender.Displayname }}' }}</b>: sent an audio file"
m.video: "<b>{{ '{{ .Sender.Displayname }}' }}</b>: sent a video"
m.location: "<b>{{ '{{ .Sender.Displayname }}' }}</b>: sent a location"

# Logging config.
logging:
# The directory for log files. Will be created if not found.
directory: ./logs
# Available variables: .Date for the file date and .Index for different log files on the same day.
# empty/null = journal logging only
file_name_format:
# Date format for file names in the Go time format: https://golang.org/pkg/time/#pkg-constants
file_date_format: "2006-01-02"
# Log file permissions.
file_mode: 0600
# Timestamp format for log entries in the Go time format.
timestamp_format: "Jan _2, 2006 15:04:05"
# Minimum severity for log messages.
# Options: debug, info, warn, error, fatal
print_level: {{ matrix_go_skype_bridge_log_level }}

+ 0
- 6
roles/custom/matrix-bridge-go-skype-bridge/templates/config.yaml.j2.license Zobrazit soubor

@@ -1,6 +0,0 @@
SPDX-FileCopyrightText: 2022 MDAD project contributors
SPDX-FileCopyrightText: 2022 Nikita Chernyi
SPDX-FileCopyrightText: 2022 Vladimir Panteleev
SPDX-FileCopyrightText: 2024 Suguru Hirahara

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 48
roles/custom/matrix-bridge-go-skype-bridge/templates/systemd/matrix-go-skype-bridge.service.j2 Zobrazit soubor

@@ -1,48 +0,0 @@
#jinja2: lstrip_blocks: True
[Unit]
Description=Matrix Go Skype Bridge bridge
{% for service in matrix_go_skype_bridge_systemd_required_services_list %}
Requires={{ service }}
After={{ service }}
{% endfor %}
{% for service in matrix_go_skype_bridge_systemd_wanted_services_list %}
Wants={{ service }}
{% endfor %}
DefaultDependencies=no

[Service]
Type=simple
Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}"
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-go-skype-bridge 2>/dev/null || true'
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-go-skype-bridge 2>/dev/null || true'

ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--rm \
--name=matrix-go-skype-bridge \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--network={{ matrix_go_skype_bridge_container_network }} \
--mount type=bind,src={{ matrix_go_skype_bridge_config_path }},dst=/config \
--mount type=bind,src={{ matrix_go_skype_bridge_data_path }},dst=/data \
--workdir=/data \
{% for arg in matrix_go_skype_bridge_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_go_skype_bridge_docker_image }} \
/usr/bin/matrix-skype -c /config/config.yaml -r /config/registration.yaml

{% for network in matrix_go_skype_bridge_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-go-skype-bridge
{% endfor %}

ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-go-skype-bridge

ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-go-skype-bridge 2>/dev/null || true'
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-go-skype-bridge 2>/dev/null || true'
Restart=always
RestartSec=30
SyslogIdentifier=matrix-go-skype-bridge

[Install]
WantedBy=multi-user.target

+ 0
- 4
roles/custom/matrix-bridge-go-skype-bridge/templates/systemd/matrix-go-skype-bridge.service.j2.license Zobrazit soubor

@@ -1,4 +0,0 @@
SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
SPDX-FileCopyrightText: 2022 Vladimir Panteleev

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 144
roles/custom/matrix-bridge-mx-puppet-discord/defaults/main.yml Zobrazit soubor

@@ -1,144 +0,0 @@
# SPDX-FileCopyrightText: 2020 - 2024 MDAD project contributors
# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2020 Hugues Morisset
# SPDX-FileCopyrightText: 2021 Ahmad Haghighi
# SPDX-FileCopyrightText: 2022 Daniel Sonck
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2022 Nikita Chernyi
# SPDX-FileCopyrightText: 2023 Samuel Meenzen
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---
# Mx Puppet Discord is a Matrix <-> Discord bridge
# Project source code URL: https://gitlab.com/mx-puppet/discord/mx-puppet-discord

matrix_mx_puppet_discord_enabled: true

matrix_mx_puppet_discord_container_image_self_build: false
matrix_mx_puppet_discord_container_image_self_build_repo: "https://gitlab.com/mx-puppet/discord/mx-puppet-discord.git"
matrix_mx_puppet_discord_container_image_self_build_version: "{{ 'main' if matrix_mx_puppet_discord_version == 'latest' else matrix_mx_puppet_discord_version }}"
matrix_mx_puppet_discord_container_image_self_build_dockerfile_path: "Dockerfile"

# Controls whether the mx-puppet-discord container exposes its HTTP port (tcp/8432 in the container).
#
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:8432"), or empty string to not expose.
matrix_mx_puppet_discord_container_http_host_bind_port: ''

# renovate: datasource=docker depName=registry.gitlab.com/mx-puppet/discord/mx-puppet-discord
matrix_mx_puppet_discord_version: v0.1.1
matrix_mx_puppet_discord_docker_image: "{{ matrix_mx_puppet_discord_docker_image_registry_prefix }}mx-puppet/discord/mx-puppet-discord:{{ matrix_mx_puppet_discord_version }}"
matrix_mx_puppet_discord_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_discord_container_image_self_build else matrix_mx_puppet_discord_docker_image_registry_prefix_upstream }}"
matrix_mx_puppet_discord_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_discord_docker_image_registry_prefix_upstream_default }}"
matrix_mx_puppet_discord_docker_image_registry_prefix_upstream_default: "registry.gitlab.com/"
matrix_mx_puppet_discord_docker_image_force_pull: "{{ matrix_mx_puppet_discord_docker_image.endswith(':latest') }}"

matrix_mx_puppet_discord_base_path: "{{ matrix_base_data_path }}/mx-puppet-discord"
matrix_mx_puppet_discord_config_path: "{{ matrix_mx_puppet_discord_base_path }}/config"
matrix_mx_puppet_discord_data_path: "{{ matrix_mx_puppet_discord_base_path }}/data"
matrix_mx_puppet_discord_docker_src_files_path: "{{ matrix_mx_puppet_discord_base_path }}/docker-src"

matrix_mx_puppet_discord_appservice_port: "8432"

matrix_mx_puppet_discord_homeserver_address: ""
matrix_mx_puppet_discord_homeserver_domain: '{{ matrix_domain }}'
matrix_mx_puppet_discord_appservice_address: 'http://matrix-mx-puppet-discord:{{ matrix_mx_puppet_discord_appservice_port }}'

matrix_mx_puppet_discord_bridge_mediaUrl: "{{ matrix_homeserver_url }}" # noqa var-naming

# "@alice:example.com" to allow a specific user
# "@.*:example.com" to allow users on a specific homeserver
# "@.*" to allow anyone
matrix_mx_puppet_discord_provisioning_whitelist:
- "@.*:{{ matrix_domain | regex_escape }}"

# Leave empty to disable blacklist
# "@bob:example.com" to disallow a specific user
# "@.*:example.com" to disallow users on a specific homeserver
matrix_mx_puppet_discord_provisioning_blacklist: []

matrix_mx_puppet_discord_container_network: ""

matrix_mx_puppet_discord_container_additional_networks: "{{ matrix_mx_puppet_discord_container_additional_networks_auto + matrix_mx_puppet_discord_container_additional_networks_custom }}"
matrix_mx_puppet_discord_container_additional_networks_auto: []
matrix_mx_puppet_discord_container_additional_networks_custom: []

# A list of extra arguments to pass to the container
matrix_mx_puppet_discord_container_extra_arguments: []

# List of systemd services that matrix-puppet-discord.service depends on.
matrix_mx_puppet_discord_systemd_required_services_list: "{{ matrix_mx_puppet_discord_systemd_required_services_list_default + matrix_mx_puppet_discord_systemd_required_services_list_auto + matrix_mx_puppet_discord_systemd_required_services_list_custom }}"
matrix_mx_puppet_discord_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_mx_puppet_discord_systemd_required_services_list_auto: []
matrix_mx_puppet_discord_systemd_required_services_list_custom: []

# List of systemd services that matrix-puppet-discord.service wants
matrix_mx_puppet_discord_systemd_wanted_services_list: []

matrix_mx_puppet_discord_appservice_token: ''
matrix_mx_puppet_discord_homeserver_token: ''

# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth).
matrix_mx_puppet_discord_login_shared_secret: ''

matrix_mx_puppet_discord_presence_enabled: true
matrix_mx_puppet_discord_presence_interval: 5000

# Database configuration
matrix_mx_puppet_discord_database_engine: 'sqlite'

matrix_mx_puppet_discord_sqlite_database_path_local: "{{ matrix_mx_puppet_discord_data_path }}/database.db"
matrix_mx_puppet_discord_sqlite_database_path_in_container: "/data/database.db"

matrix_mx_puppet_discord_database_username: matrix_mx_puppet_discord
matrix_mx_puppet_discord_database_password: ~
matrix_mx_puppet_discord_database_hostname: ''
matrix_mx_puppet_discord_database_port: 5432
matrix_mx_puppet_discord_database_name: matrix_mx_puppet_discord
matrix_mx_puppet_discord_database_sslmode: disable

matrix_mx_puppet_discord_database_connection_string: 'postgresql://{{ matrix_mx_puppet_discord_database_username }}:{{ matrix_mx_puppet_discord_database_password }}@{{ matrix_mx_puppet_discord_database_hostname }}:{{ matrix_mx_puppet_discord_database_port }}/{{ matrix_mx_puppet_discord_database_name }}?sslmode={{ matrix_mx_puppet_discord_database_sslmode }}'

# Default configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it.
#
# For a more advanced customization, you can extend the default (see `matrix_mx_puppet_discord_configuration_extension_yaml`)
# or completely replace this variable with your own template.
matrix_mx_puppet_discord_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"

matrix_mx_puppet_discord_configuration_extension_yaml: |
# Your custom YAML configuration goes here.
# This configuration extends the default starting configuration (`matrix_mx_puppet_discord_configuration_yaml`).
#
# You can override individual variables from the default configuration, or introduce new ones.
#
# If you need something more special, you can take full control by
# completely redefining `matrix_mx_puppet_discord_configuration_yaml`.

matrix_mx_puppet_discord_configuration_extension: "{{ matrix_mx_puppet_discord_configuration_extension_yaml | from_yaml if matrix_mx_puppet_discord_configuration_extension_yaml | from_yaml is mapping else {} }}"

# Holds the final configuration (a combination of the default and its extension).
# You most likely don't need to touch this variable. Instead, see `matrix_mx_puppet_discord_configuration_yaml`.
matrix_mx_puppet_discord_configuration: "{{ matrix_mx_puppet_discord_configuration_yaml | from_yaml | combine(matrix_mx_puppet_discord_configuration_extension, recursive=True) }}"

matrix_mx_puppet_discord_registration_yaml: |
as_token: "{{ matrix_mx_puppet_discord_appservice_token }}"
hs_token: "{{ matrix_mx_puppet_discord_homeserver_token }}"
id: discord-puppet
namespaces:
users:
- exclusive: true
regex: '@_discordpuppet_.*:{{ matrix_mx_puppet_discord_homeserver_domain | regex_escape }}'
rooms: []
aliases:
- exclusive: true
regex: '#_discordpuppet_.*:{{ matrix_mx_puppet_discord_homeserver_domain | regex_escape }}'
protocols: []
rate_limited: false
sender_localpart: _discordpuppet_bot
url: {{ matrix_mx_puppet_discord_appservice_address }}
de.sorunome.msc2409.push_ephemeral: true
receive_ephemeral: true

matrix_mx_puppet_discord_registration: "{{ matrix_mx_puppet_discord_registration_yaml | from_yaml }}"

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-discord/tasks/main.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 Hugues Morisset
# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- tags:
- setup-all
- setup-mx-puppet-discord
- install-all
- install-mx-puppet-discord
block:
- when: matrix_mx_puppet_discord_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"

- when: matrix_mx_puppet_discord_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml"

- tags:
- setup-all
- setup-mx-puppet-discord
block:
- when: not matrix_mx_puppet_discord_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"

+ 0
- 144
roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_install.yml Zobrazit soubor

@@ -1,144 +0,0 @@
# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2020 Hugues Morisset
# SPDX-FileCopyrightText: 2020 Stuart Mumford
# SPDX-FileCopyrightText: 2022 Jim Myhrberg
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2022 Nikita Chernyi
# SPDX-FileCopyrightText: 2022 Sebastian Gumprich
# SPDX-FileCopyrightText: 2024 David Mehren
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Ensure MX Puppet Discord paths exist
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: 0750
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- {path: "{{ matrix_mx_puppet_discord_base_path }}", when: true}
- {path: "{{ matrix_mx_puppet_discord_config_path }}", when: true}
- {path: "{{ matrix_mx_puppet_discord_data_path }}", when: true}
- {path: "{{ matrix_mx_puppet_discord_docker_src_files_path }}", when: "{{ matrix_mx_puppet_discord_container_image_self_build }}"}
when: matrix_mx_puppet_discord_enabled | bool and item.when | bool

- name: Check if an old database file already exists
ansible.builtin.stat:
path: "{{ matrix_mx_puppet_discord_base_path }}/database.db"
register: matrix_mx_puppet_discord_stat_database

- when: "matrix_mx_puppet_discord_stat_database.stat.exists"
block:
- name: (Data relocation) Ensure matrix-mx-puppet-discord.service is stopped
ansible.builtin.service:
name: matrix-mx-puppet-discord
state: stopped
daemon_reload: true
failed_when: false

- name: (Data relocation) Move mx-puppet-discord database file to ./data directory
ansible.builtin.command:
cmd: "mv {{ matrix_mx_puppet_discord_base_path }}/database.db {{ matrix_mx_puppet_discord_data_path }}/database.db"
register: matrix_mx_puppet_discord_relocate_database_result
changed_when: matrix_mx_puppet_discord_relocate_database_result.rc == 0

- ansible.builtin.set_fact:
matrix_mx_puppet_discord_requires_restart: false

- when: "matrix_mx_puppet_discord_database_engine == 'postgres'"
block:
- name: Check if an SQLite database already exists
ansible.builtin.stat:
path: "{{ matrix_mx_puppet_discord_sqlite_database_path_local }}"
register: matrix_mx_puppet_discord_sqlite_database_path_local_stat_result

- when: "matrix_mx_puppet_discord_sqlite_database_path_local_stat_result.stat.exists | bool"
block:
- ansible.builtin.include_role:
name: galaxy/postgres
tasks_from: migrate_db_to_postgres
vars:
postgres_db_migration_request:
src: "{{ matrix_mx_puppet_discord_sqlite_database_path_local }}"
dst: "{{ matrix_mx_puppet_discord_database_connection_string }}"
caller: "{{ role_path | basename }}"
engine_variable_name: 'matrix_mx_puppet_discord_database_engine'
engine_old: 'sqlite'
systemd_services_to_stop: ['matrix-mx-puppet-discord.service']

- ansible.builtin.set_fact:
matrix_mx_puppet_discord_requires_restart: true

- name: Ensure MX Puppet Discord image is pulled
community.docker.docker_image:
name: "{{ matrix_mx_puppet_discord_docker_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_mx_puppet_discord_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_discord_docker_image_force_pull }}"
when: matrix_mx_puppet_discord_enabled | bool and not matrix_mx_puppet_discord_container_image_self_build
register: result
retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}"
until: result is not failed

- name: Ensure MX Puppet Discord repository is present on self build
ansible.builtin.git:
repo: "{{ matrix_mx_puppet_discord_container_image_self_build_repo }}"
dest: "{{ matrix_mx_puppet_discord_docker_src_files_path }}"
force: "yes"
version: "{{ matrix_mx_puppet_discord_container_image_self_build_version }}"
become: true
become_user: "{{ matrix_user_name }}"
register: matrix_mx_puppet_discord_git_pull_results
when: "matrix_mx_puppet_discord_enabled | bool and matrix_mx_puppet_discord_container_image_self_build"

- name: Ensure MX Puppet Discord Docker image is built
community.docker.docker_image:
name: "{{ matrix_mx_puppet_discord_docker_image }}"
source: build
force_source: "{{ matrix_mx_puppet_discord_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_discord_git_pull_results.changed }}"
build:
dockerfile: "{{ matrix_mx_puppet_discord_container_image_self_build_dockerfile_path }}"
path: "{{ matrix_mx_puppet_discord_docker_src_files_path }}"
pull: true
when: "matrix_mx_puppet_discord_enabled | bool and matrix_mx_puppet_discord_container_image_self_build | bool"

- name: Ensure mx-puppet-discord config.yaml installed
ansible.builtin.copy:
content: "{{ matrix_mx_puppet_discord_configuration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mx_puppet_discord_config_path }}/config.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure mx-puppet-discord discord-registration.yaml installed
ansible.builtin.copy:
content: "{{ matrix_mx_puppet_discord_registration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mx_puppet_discord_config_path }}/registration.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure mx-puppet-discord container network is created
community.general.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_mx_puppet_discord_container_network }}"
driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"

- name: Ensure matrix-mx-puppet-discord.service installed
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-discord.service.j2"
dest: "/etc/systemd/system/matrix-mx-puppet-discord.service"
mode: 0644

- name: Ensure matrix-mx-puppet-discord.service restarted, if necessary
ansible.builtin.service:
name: "matrix-mx-puppet-discord.service"
state: restarted
daemon_reload: true
when: "matrix_mx_puppet_discord_requires_restart | bool"

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-discord/tasks/setup_uninstall.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 Hugues Morisset
# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Check existence of matrix-mx-puppet-discord service
ansible.builtin.stat:
path: "/etc/systemd/system/matrix-mx-puppet-discord.service"
register: matrix_mx_puppet_discord_service_stat

- when: matrix_mx_puppet_discord_service_stat.stat.exists | bool
block:
- name: Ensure matrix-mx-puppet-discord is stopped
ansible.builtin.service:
name: matrix-mx-puppet-discord
state: stopped
enabled: false
daemon_reload: true

- name: Ensure matrix-mx-puppet-discord.service doesn't exist
ansible.builtin.file:
path: "/etc/systemd/system/matrix-mx-puppet-discord.service"
state: absent

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-discord/tasks/validate_config.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 Hugues Morisset
# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Fail if required mx-puppet-discord settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items:
- {'name': 'matrix_mx_puppet_discord_appservice_token', when: true}
- {'name': 'matrix_mx_puppet_discord_homeserver_address', when: true}
- {'name': 'matrix_mx_puppet_discord_homeserver_token', when: true}
- {'name': 'matrix_mx_puppet_discord_database_hostname', when: "{{ matrix_mx_puppet_discord_database_engine == 'postgres' }}"}
- {'name': 'matrix_mx_puppet_discord_container_network', when: true}

- name: (Deprecation) Catch and report renamed mx-puppet-discord variables
ansible.builtin.fail:
msg: >-
The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead.
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_mx_puppet_discord_docker_image_name_prefix', 'new': 'matrix_mx_puppet_discord_docker_image_registry_prefix'}

+ 0
- 125
roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2 Zobrazit soubor

@@ -1,125 +0,0 @@
#jinja2: lstrip_blocks: True
bridge:
# Port to host the bridge on
# Used for communication between the homeserver and the bridge
port: {{ matrix_mx_puppet_discord_appservice_port }}
# The host connections to the bridge's webserver are allowed from
bindAddress: 0.0.0.0
# Public domain of the homeserver
domain: {{ matrix_mx_puppet_discord_homeserver_domain }}
# Reachable URL of the Matrix homeserver
homeserverUrl: {{ matrix_mx_puppet_discord_homeserver_address }}
# Optionally specify a different media URL used for the media store
#
# This is where Discord will download user profile pictures and media
# from
mediaUrl: {{ matrix_mx_puppet_discord_bridge_mediaUrl }}
{% if matrix_mx_puppet_discord_login_shared_secret != '' %}
loginSharedSecretMap:
{{ matrix_domain }}: {{ matrix_mx_puppet_discord_login_shared_secret }}
{% endif %}
# Display name of the bridge bot
displayname: Discord Puppet Bridge

presence:
# Bridge Discord online/offline status
enabled: {{ matrix_mx_puppet_discord_presence_enabled | to_json }}
# How often to send status to the homeserver in milliseconds
interval: {{ matrix_mx_puppet_discord_presence_interval | to_json }}

provisioning:
# Regex of Matrix IDs allowed to use the puppet bridge
whitelist: {{ matrix_mx_puppet_discord_provisioning_whitelist|to_json }}
# Allow a specific user
#- "@alice:example\\.com"
# Allow users on a specific homeserver
#- "@.*:example\\.com"
# Allow anyone
#- ".*"
# Regex of Matrix IDs forbidden from using the puppet bridge
#blacklist:
# Disallow a specific user
#- "@bob:example\\.com"
# Disallow users on a specific homeserver
#- "@.*:example\\.com"
blacklist: {{ matrix_mx_puppet_discord_provisioning_blacklist|to_json }}

relay:
# Regex of Matrix IDs who are allowed to use the bridge in relay mode.
# Relay mode is when a single Discord bot account relays messages of
# multiple Matrix users
#
# Same format as in provisioning
whitelist: {{ matrix_mx_puppet_discord_provisioning_whitelist|to_json }}
blacklist: {{ matrix_mx_puppet_discord_provisioning_blacklist|to_json }}

selfService:
# Regex of Matrix IDs who are allowed to use bridge self-servicing (plumbed rooms)
#
# Same format as in provisioning
whitelist: {{ matrix_mx_puppet_discord_provisioning_whitelist|to_json }}
blacklist: {{ matrix_mx_puppet_discord_provisioning_blacklist|to_json }}

# Override the default name patterns for users, rooms and groups
#
# Variable names must be prefixed with a ':'
namePatterns:
# The default displayname for a bridged user
#
# Available variables:
#
# name: username of the user
# discriminator: hashtag of the user (ex. #1234)
user: :name

# A user's guild-specific displayname - if they've set a custom nick in
# a guild
#
# Available variables:
#
# name: username of the user
# discriminator: hashtag of the user (ex. #1234)
# displayname: the user's custom group-specific nick
# channel: the name of the channel
# guild: the name of the guild
userOverride: :name

# Room names for bridged Discord channels
#
# Available variables:
#
# name: name of the channel
# guild: name of the guild
room: :name

# Group names for bridged Discord servers
#
# Available variables:
#
# name: name of the guide
group: :name

database:
{% if matrix_mx_puppet_discord_database_engine == 'sqlite' %}
# Use SQLite3 as a database backend
# The name of the database file
filename: {{ matrix_mx_puppet_discord_sqlite_database_path_in_container|to_json }}
{% else %}
# Use Postgres as a database backend
# If set, will be used instead of SQLite3
# Connection string to connect to the Postgres instance
# with username "user", password "pass", host "localhost" and database name "dbname".
# Modify each value as necessary
connString: {{ matrix_mx_puppet_discord_database_connection_string|to_json }}
{% endif %}

logging:
# Log level of console output
# Allowed values starting with most verbose:
# silly, debug, verbose, info, warn, error
console: warn
# Date and time formatting
lineDateFormat: MMM-D HH:mm:ss.SSS
# Logging files
# Log files are rotated daily by default
files: []

+ 0
- 6
roles/custom/matrix-bridge-mx-puppet-discord/templates/config.yaml.j2.license Zobrazit soubor

@@ -1,6 +0,0 @@
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Hugues Morisset
SPDX-FileCopyrightText: 2020 MDAD project contributors
SPDX-FileCopyrightText: 2022 Nikita Chernyi

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 48
roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2 Zobrazit soubor

@@ -1,48 +0,0 @@
#jinja2: lstrip_blocks: True
[Unit]
Description=Matrix Mx Puppet Discord bridge
{% for service in matrix_mx_puppet_discord_systemd_required_services_list %}
Requires={{ service }}
After={{ service }}
{% endfor %}
{% for service in matrix_mx_puppet_discord_systemd_wanted_services_list %}
Wants={{ service }}
{% endfor %}
DefaultDependencies=no

[Service]
Type=simple
Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}"
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-discord 2>/dev/null || true'
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-discord 2>/dev/null || true'

ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--rm \
--name=matrix-mx-puppet-discord \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--network={{ matrix_mx_puppet_discord_container_network }} \
-e CONFIG_PATH=/config/config.yaml \
-e REGISTRATION_PATH=/config/registration.yaml \
--mount type=bind,src={{ matrix_mx_puppet_discord_config_path }},dst=/config \
--mount type=bind,src={{ matrix_mx_puppet_discord_data_path }},dst=/data \
{% for arg in matrix_mx_puppet_discord_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_mx_puppet_discord_docker_image }}

{% for network in matrix_mx_puppet_discord_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mx-puppet-discord
{% endfor %}

ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-discord

ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-discord 2>/dev/null || true'
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-discord 2>/dev/null || true'
Restart=always
RestartSec=30
SyslogIdentifier=matrix-mx-puppet-discord

[Install]
WantedBy=multi-user.target

+ 0
- 5
roles/custom/matrix-bridge-mx-puppet-discord/templates/systemd/matrix-mx-puppet-discord.service.j2.license Zobrazit soubor

@@ -1,5 +0,0 @@
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Hugues Morisset
SPDX-FileCopyrightText: 2020 Scott Crossen

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 132
roles/custom/matrix-bridge-mx-puppet-instagram/defaults/main.yml Zobrazit soubor

@@ -1,132 +0,0 @@
# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors
# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2021 Ahmad Haghighi
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2022 Nikita Chernyi
# SPDX-FileCopyrightText: 2023 Samuel Meenzen
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---
# mx-puppet-instagram bridges instagram DMs
# Project source code URL: https://github.com/Sorunome/mx-puppet-instagram

matrix_mx_puppet_instagram_enabled: true

matrix_mx_puppet_instagram_container_image_self_build: false
matrix_mx_puppet_instagram_container_image_self_build_repo: "https://github.com/Sorunome/mx-puppet-instagram.git"
matrix_mx_puppet_instagram_container_image_self_build_repo_version: "{{ 'master' if matrix_mx_puppet_instagram_version == 'latest' else matrix_mx_puppet_instagram_version }}"

# renovate: datasource=docker depName=sorunome/mx-puppet-instagram
matrix_mx_puppet_instagram_version: latest
matrix_mx_puppet_instagram_docker_image: "{{ matrix_mx_puppet_instagram_docker_image_registry_prefix }}sorunome/mx-puppet-instagram:{{ matrix_mx_puppet_instagram_version }}"
matrix_mx_puppet_instagram_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_instagram_container_image_self_build else matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream }}"
matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream_default }}"
matrix_mx_puppet_instagram_docker_image_registry_prefix_upstream_default: "docker.io/"
matrix_mx_puppet_instagram_docker_image_force_pull: "{{ matrix_mx_puppet_instagram_docker_image.endswith(':latest') }}"

matrix_mx_puppet_instagram_base_path: "{{ matrix_base_data_path }}/mx-puppet-instagram"
matrix_mx_puppet_instagram_config_path: "{{ matrix_mx_puppet_instagram_base_path }}/config"
matrix_mx_puppet_instagram_data_path: "{{ matrix_mx_puppet_instagram_base_path }}/data"
matrix_mx_puppet_instagram_docker_src_files_path: "{{ matrix_mx_puppet_instagram_base_path }}/docker-src"

matrix_mx_puppet_instagram_appservice_port: "8440"
matrix_mx_puppet_instagram_homeserver_address: ""
matrix_mx_puppet_instagram_homeserver_domain: '{{ matrix_domain }}'
matrix_mx_puppet_instagram_appservice_address: 'http://matrix-mx-puppet-instagram:{{ matrix_mx_puppet_instagram_appservice_port }}'

# "@alice:example.com" to allow a specific user
# "@.*:example.com" to allow users on a specific homeserver
# "@.*" to allow anyone
matrix_mx_puppet_instagram_provisioning_whitelist:
- "@.*:{{ matrix_domain | regex_escape }}"

# Leave empty to disable blacklist
# "@bob:example.com" to disallow a specific user
# "@.*:example.com" to disallow users on a specific homeserver
matrix_mx_puppet_instagram_provisioning_blacklist: []

matrix_mx_puppet_instagram_container_network: ""

matrix_mx_puppet_instagram_container_additional_networks: "{{ matrix_mx_puppet_instagram_container_additional_networks_auto + matrix_mx_puppet_instagram_container_additional_networks_custom }}"
matrix_mx_puppet_instagram_container_additional_networks_auto: []
matrix_mx_puppet_instagram_container_additional_networks_custom: []

# A list of extra arguments to pass to the container
matrix_mx_puppet_instagram_container_extra_arguments: []

# List of systemd services that matrix-puppet-instagram.service depends on.
matrix_mx_puppet_instagram_systemd_required_services_list: "{{ matrix_mx_puppet_instagram_systemd_required_services_list_default + matrix_mx_puppet_instagram_systemd_required_services_list_auto + matrix_mx_puppet_instagram_systemd_required_services_list_custom }}"
matrix_mx_puppet_instagram_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_mx_puppet_instagram_systemd_required_services_list_auto: []
matrix_mx_puppet_instagram_systemd_required_services_list_custom: []

# List of systemd services that matrix-puppet-instagram.service wants
matrix_mx_puppet_instagram_systemd_wanted_services_list: []

matrix_mx_puppet_instagram_appservice_token: ''
matrix_mx_puppet_instagram_homeserver_token: ''

# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth).
matrix_mx_puppet_instagram_login_shared_secret: ''

matrix_mx_puppet_instagram_presence_enabled: true
matrix_mx_puppet_instagram_presence_interval: 5000

matrix_mx_puppet_instagram_database_engine: sqlite

matrix_mx_puppet_instagram_sqlite_database_path_local: "{{ matrix_mx_puppet_instagram_data_path }}/database.db"
matrix_mx_puppet_instagram_sqlite_database_path_in_container: "/data/database.db"

matrix_mx_puppet_instagram_database_username: matrix_mx_puppet_instagram
matrix_mx_puppet_instagram_database_password: ~
matrix_mx_puppet_instagram_database_hostname: ''
matrix_mx_puppet_instagram_database_port: 5432
matrix_mx_puppet_instagram_database_name: matrix_mx_puppet_instagram
matrix_mx_puppet_instagram_database_sslmode: disable

matrix_mx_puppet_instagram_database_connection_string: 'postgresql://{{ matrix_mx_puppet_instagram_database_username }}:{{ matrix_mx_puppet_instagram_database_password }}@{{ matrix_mx_puppet_instagram_database_hostname }}:{{ matrix_mx_puppet_instagram_database_port }}/{{ matrix_mx_puppet_instagram_database_name }}?sslmode={{ matrix_mx_puppet_instagram_database_sslmode }}'

# Default configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it.
#
# For a more advanced customization, you can extend the default (see `matrix_mx_puppet_instagram_configuration_extension_yaml`)
# or completely replace this variable with your own template.
matrix_mx_puppet_instagram_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"

matrix_mx_puppet_instagram_configuration_extension_yaml: |
# Your custom YAML configuration goes here.
# This configuration extends the default starting configuration (`matrix_mx_puppet_instagram_configuration_yaml`).
#
# You can override individual variables from the default configuration, or introduce new ones.
#
# If you need something more special, you can take full control by
# completely redefining `matrix_mx_puppet_instagram_configuration_yaml`.

matrix_mx_puppet_instagram_configuration_extension: "{{ matrix_mx_puppet_instagram_configuration_extension_yaml | from_yaml if matrix_mx_puppet_instagram_configuration_extension_yaml | from_yaml is mapping else {} }}"

# Holds the final configuration (a combination of the default and its extension).
# You most likely don't need to touch this variable. Instead, see `matrix_mx_puppet_instagram_configuration_yaml`.
matrix_mx_puppet_instagram_configuration: "{{ matrix_mx_puppet_instagram_configuration_yaml | from_yaml | combine(matrix_mx_puppet_instagram_configuration_extension, recursive=True) }}"

matrix_mx_puppet_instagram_registration_yaml: |
as_token: "{{ matrix_mx_puppet_instagram_appservice_token }}"
hs_token: "{{ matrix_mx_puppet_instagram_homeserver_token }}"
id: instagram-puppet
namespaces:
users:
- exclusive: true
regex: '@_instagrampuppet_.*:{{ matrix_mx_puppet_instagram_homeserver_domain | regex_escape }}'
rooms: []
aliases:
- exclusive: true
regex: '#_instagrampuppet_.*:{{ matrix_mx_puppet_instagram_homeserver_domain | regex_escape }}'
protocols: []
rate_limited: false
sender_localpart: _instagrampuppet_bot
url: {{ matrix_mx_puppet_instagram_appservice_address }}
de.sorunome.msc2409.push_ephemeral: true
receive_ephemeral: true

matrix_mx_puppet_instagram_registration: "{{ matrix_mx_puppet_instagram_registration_yaml | from_yaml }}"

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-instagram/tasks/main.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors
# SPDX-FileCopyrightText: 2022 - 2023 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- tags:
- setup-all
- setup-mx-puppet-instagram
- install-all
- install-mx-puppet-instagram
block:
- when: matrix_mx_puppet_instagram_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"

- when: matrix_mx_puppet_instagram_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml"

- tags:
- setup-all
- setup-mx-puppet-instagram
block:
- when: not matrix_mx_puppet_instagram_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"

+ 0
- 124
roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_install.yml Zobrazit soubor

@@ -1,124 +0,0 @@
# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors
# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2020 Stuart Mumford
# SPDX-FileCopyrightText: 2022 Jim Myhrberg
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2022 Nikita Chernyi
# SPDX-FileCopyrightText: 2022 Sebastian Gumprich
# SPDX-FileCopyrightText: 2024 David Mehren
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- ansible.builtin.set_fact:
matrix_mx_puppet_instagram_requires_restart: false

- when: "matrix_mx_puppet_instagram_database_engine == 'postgres'"
block:
- name: Check if an SQLite database already exists
ansible.builtin.stat:
path: "{{ matrix_mx_puppet_instagram_sqlite_database_path_local }}"
register: matrix_mx_puppet_instagram_sqlite_database_path_local_stat_result

- when: "matrix_mx_puppet_instagram_sqlite_database_path_local_stat_result.stat.exists | bool"
block:
- ansible.builtin.include_role:
name: galaxy/postgres
tasks_from: migrate_db_to_postgres
vars:
postgres_db_migration_request:
src: "{{ matrix_mx_puppet_instagram_sqlite_database_path_local }}"
dst: "{{ matrix_mx_puppet_instagram_database_connection_string }}"
caller: "{{ role_path | basename }}"
engine_variable_name: 'matrix_mx_puppet_instagram_database_engine'
engine_old: 'sqlite'
systemd_services_to_stop: ['matrix-mx-puppet-instagram.service']

- ansible.builtin.set_fact:
matrix_mx_puppet_instagram_requires_restart: true

- name: Ensure mx-puppet-instagram image is pulled
community.docker.docker_image:
name: "{{ matrix_mx_puppet_instagram_docker_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_mx_puppet_instagram_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_instagram_docker_image_force_pull }}"
when: matrix_mx_puppet_instagram_enabled | bool and not matrix_mx_puppet_instagram_container_image_self_build
register: result
retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}"
until: result is not failed

- name: Ensure mx-puppet-instagram paths exist
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: 0750
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- {path: "{{ matrix_mx_puppet_instagram_base_path }}", when: true}
- {path: "{{ matrix_mx_puppet_instagram_config_path }}", when: true}
- {path: "{{ matrix_mx_puppet_instagram_data_path }}", when: true}
- {path: "{{ matrix_mx_puppet_instagram_docker_src_files_path }}", when: "{{ matrix_mx_puppet_instagram_container_image_self_build }}"}
when: matrix_mx_puppet_instagram_enabled | bool and item.when | bool

- name: Ensure mx-puppet-instagram repository is present on self build
ansible.builtin.git:
repo: "{{ matrix_mx_puppet_instagram_container_image_self_build_repo }}"
version: "{{ matrix_mx_puppet_instagram_container_image_self_build_repo_version }}"
dest: "{{ matrix_mx_puppet_instagram_docker_src_files_path }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
register: matrix_mx_puppet_instagram_git_pull_results
when: "matrix_mx_puppet_instagram_enabled | bool and matrix_mx_puppet_instagram_container_image_self_build | bool"

- name: Ensure mx-puppet-instagram Docker image is built
community.docker.docker_image:
name: "{{ matrix_mx_puppet_instagram_docker_image }}"
source: build
force_source: "{{ matrix_mx_puppet_instagram_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_instagram_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_mx_puppet_instagram_docker_src_files_path }}"
pull: true
when: "matrix_mx_puppet_instagram_enabled | bool and matrix_mx_puppet_instagram_container_image_self_build | bool"

- name: Ensure mx-puppet-instagram config.yaml installed
ansible.builtin.copy:
content: "{{ matrix_mx_puppet_instagram_configuration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mx_puppet_instagram_config_path }}/config.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure mx-puppet-instagram-registration.yaml installed
ansible.builtin.copy:
content: "{{ matrix_mx_puppet_instagram_registration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mx_puppet_instagram_config_path }}/registration.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure mx-puppet-instagram container network is created
community.general.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_mx_puppet_instagram_container_network }}"
driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"

- name: Ensure matrix-mx-puppet-instagram.service installed
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-instagram.service.j2"
dest: "/etc/systemd/system/matrix-mx-puppet-instagram.service"
mode: 0644

- name: Ensure matrix-mx-puppet-instagram.service restarted, if necessary
ansible.builtin.service:
name: "matrix-mx-puppet-instagram.service"
state: restarted
daemon_reload: true
when: "matrix_mx_puppet_instagram_requires_restart | bool"

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-instagram/tasks/setup_uninstall.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 MDAD project contributors
# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Check existence of matrix-mx-puppet-instagram service
ansible.builtin.stat:
path: "/etc/systemd/system/matrix-mx-puppet-instagram.service"
register: matrix_mx_puppet_instagram_service_stat

- when: matrix_mx_puppet_instagram_service_stat.stat.exists | bool
block:
- name: Ensure matrix-mx-puppet-instagram is stopped
ansible.builtin.service:
name: matrix-mx-puppet-instagram
state: stopped
enabled: false
daemon_reload: true

- name: Ensure matrix-mx-puppet-instagram.service doesn't exist
ansible.builtin.file:
path: "/etc/systemd/system/matrix-mx-puppet-instagram.service"
state: absent

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-instagram/tasks/validate_config.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 MDAD project contributors
# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Fail if required mx-puppet-instagram settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items:
- {'name': 'matrix_mx_puppet_instagram_appservice_token', when: true}
- {'name': 'matrix_mx_puppet_instagram_homeserver_address', when: true}
- {'name': 'matrix_mx_puppet_instagram_homeserver_token', when: true}
- {'name': 'matrix_mx_puppet_instagram_database_hostname', when: "{{ matrix_mx_puppet_instagram_database_engine == 'postgres' }}"}
- {'name': 'matrix_mx_puppet_instagram_container_network', when: true}

- name: (Deprecation) Catch and report renamed mx-puppet-instagram variables
ansible.builtin.fail:
msg: >-
The variable `{{ item.old }}` is deprecated. Please use `{{ item.new }}` instead.
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_mx_puppet_instagram_docker_image_name_prefix', 'new': 'matrix_mx_puppet_instagram_docker_image_registry_prefix'}

+ 0
- 69
roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2 Zobrazit soubor

@@ -1,69 +0,0 @@
#jinja2: lstrip_blocks: True
bridge:
# Port to host the bridge on
# Used for communication between the homeserver and the bridge
port: {{ matrix_mx_puppet_instagram_appservice_port }}
# The host connections to the bridge's webserver are allowed from
bindAddress: 0.0.0.0
# Public domain of the homeserver
domain: {{ matrix_mx_puppet_instagram_homeserver_domain }}
# Reachable URL of the Matrix homeserver
homeserverUrl: {{ matrix_mx_puppet_instagram_homeserver_address }}
{% if matrix_mx_puppet_instagram_login_shared_secret != '' %}
loginSharedSecretMap:
{{ matrix_domain }}: {{ matrix_mx_puppet_instagram_login_shared_secret }}
{% endif %}

presence:
# Bridge Instagram online/offline status
enabled: {{ matrix_mx_puppet_instagram_presence_enabled | to_json }}
# How often to send status to the homeserver in milliseconds
interval: {{ matrix_mx_puppet_instagram_presence_interval | to_json }}

provisioning:
# Regex of Matrix IDs allowed to use the puppet bridge
whitelist: {{ matrix_mx_puppet_instagram_provisioning_whitelist|to_json }}
# Allow a specific user
#- "@alice:example\\.com"
# Allow users on a specific homeserver
#- "@.*:example\\.com"
# Allow anyone
#- ".*"
# Regex of Matrix IDs forbidden from using the puppet bridge
#blacklist:
# Disallow a specific user
#- "@bob:example\\.com"
# Disallow users on a specific homeserver
#- "@.*:example\\.com"
blacklist: {{ matrix_mx_puppet_instagram_provisioning_blacklist|to_json }}

# Shared secret for the provisioning API for use by integration managers.
# If this is not set, the provisioning API will not be enabled.
#sharedSecret: random string
# Path prefix for the provisioning API. /v1 will be appended to the prefix automatically.
apiPrefix: /_matrix/provision

database:
{% if matrix_mx_puppet_instagram_database_engine == 'postgres' %}
# Use Postgres as a database backend
# If set, will be used instead of SQLite3
# Connection string to connect to the Postgres instance
# with username "user", password "pass", host "localhost" and database name "dbname".
# Modify each value as necessary
connString: {{ matrix_mx_puppet_instagram_database_connection_string|to_json }}
{% else %}
# Use SQLite3 as a database backend
# The name of the database file
filename: {{ matrix_mx_puppet_instagram_sqlite_database_path_in_container|to_json }}
{% endif %}

logging:
# Log level of console output
# Allowed values starting with most verbose:
# silly, debug, verbose, info, warn, error
console: warn
# Date and time formatting
lineDateFormat: MMM-D HH:mm:ss.SSS
# Logging files
# Log files are rotated daily by default
files: []

+ 0
- 5
roles/custom/matrix-bridge-mx-puppet-instagram/templates/config.yaml.j2.license Zobrazit soubor

@@ -1,5 +0,0 @@
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 MDAD project contributors
SPDX-FileCopyrightText: 2022 Nikita Chernyi

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 48
roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2 Zobrazit soubor

@@ -1,48 +0,0 @@
#jinja2: lstrip_blocks: True
[Unit]
Description=Matrix Mx Puppet Instagram bridge
{% for service in matrix_mx_puppet_instagram_systemd_required_services_list %}
Requires={{ service }}
After={{ service }}
{% endfor %}
{% for service in matrix_mx_puppet_instagram_systemd_wanted_services_list %}
Wants={{ service }}
{% endfor %}
DefaultDependencies=no

[Service]
Type=simple
Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}"
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-instagram 2>/dev/null || true'
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-instagram 2>/dev/null || true'

ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--rm \
--name=matrix-mx-puppet-instagram \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--network={{ matrix_mx_puppet_instagram_container_network }} \
-e CONFIG_PATH=/config/config.yaml \
-e REGISTRATION_PATH=/config/registration.yaml \
--mount type=bind,src={{ matrix_mx_puppet_instagram_config_path }},dst=/config \
--mount type=bind,src={{ matrix_mx_puppet_instagram_data_path }},dst=/data \
{% for arg in matrix_mx_puppet_instagram_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_mx_puppet_instagram_docker_image }}

{% for network in matrix_mx_puppet_instagram_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mx-puppet-instagram
{% endfor %}

ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-instagram

ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-instagram 2>/dev/null || true'
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-instagram 2>/dev/null || true'
Restart=always
RestartSec=30
SyslogIdentifier=matrix-mx-puppet-instagram

[Install]
WantedBy=multi-user.target

+ 0
- 5
roles/custom/matrix-bridge-mx-puppet-instagram/templates/systemd/matrix-mx-puppet-instagram.service.j2.license Zobrazit soubor

@@ -1,5 +0,0 @@
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 MDAD project contributors
SPDX-FileCopyrightText: 2020 Scott Crossen

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 184
roles/custom/matrix-bridge-mx-puppet-slack/defaults/main.yml Zobrazit soubor

@@ -1,184 +0,0 @@
# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors
# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2020 Hugues Morisset
# SPDX-FileCopyrightText: 2020 Rodrigo Belem
# SPDX-FileCopyrightText: 2021 Ahmad Haghighi
# SPDX-FileCopyrightText: 2021 Marcel Ackermann
# SPDX-FileCopyrightText: 2022 Daniel Sonck
# SPDX-FileCopyrightText: 2022 Jim Myhrberg
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2022 Nikita Chernyi
# SPDX-FileCopyrightText: 2023 Samuel Meenzen
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---
# Mx Puppet Slack is a Matrix <-> Slack bridge
# Project source code URL: https://gitlab.com/mx-puppet/slack/mx-puppet-slack

matrix_mx_puppet_slack_enabled: true

matrix_mx_puppet_slack_scheme: https
matrix_mx_puppet_slack_hostname: ''
matrix_mx_puppet_slack_path_prefix: /slack/oauth

matrix_mx_puppet_slack_oauth_client_id: ''
matrix_mx_puppet_slack_oauth_client_secret: ''

matrix_mx_puppet_slack_container_image_self_build: false
matrix_mx_puppet_slack_container_image_self_build_repo: "https://gitlab.com/mx-puppet/slack/mx-puppet-slack.git"
matrix_mx_puppet_slack_container_image_self_build_version: "{{ 'main' if matrix_mx_puppet_slack_version == 'latest' else matrix_mx_puppet_slack_version }}"
matrix_mx_puppet_slack_container_image_self_build_dockerfile_path: "Dockerfile"

# Controls whether the mx-puppet-slack container exposes its HTTP port (tcp/8432 in the container).
#
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:8432"), or empty string to not expose.
matrix_mx_puppet_slack_container_http_host_bind_port: ''

# renovate: datasource=docker depName=registry.gitlab.com/mx-puppet/slack/mx-puppet-slack
matrix_mx_puppet_slack_version: v0.1.2
matrix_mx_puppet_slack_docker_image: "{{ matrix_mx_puppet_slack_docker_image_registry_prefix }}mx-puppet/slack/mx-puppet-slack:{{ matrix_mx_puppet_slack_version }}"
matrix_mx_puppet_slack_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_slack_container_image_self_build else matrix_mx_puppet_slack_docker_image_registry_prefix_upstream }}"
matrix_mx_puppet_slack_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_slack_docker_image_registry_prefix_upstream_default }}"
matrix_mx_puppet_slack_docker_image_registry_prefix_upstream_default: "registry.gitlab.com/"
matrix_mx_puppet_slack_docker_image_force_pull: "{{ matrix_mx_puppet_slack_docker_image.endswith(':latest') }}"

matrix_mx_puppet_slack_base_path: "{{ matrix_base_data_path }}/mx-puppet-slack"
matrix_mx_puppet_slack_config_path: "{{ matrix_mx_puppet_slack_base_path }}/config"
matrix_mx_puppet_slack_data_path: "{{ matrix_mx_puppet_slack_base_path }}/data"
matrix_mx_puppet_slack_docker_src_files_path: "{{ matrix_mx_puppet_slack_base_path }}/docker-src"

matrix_mx_puppet_slack_appservice_port: "8432"

matrix_mx_puppet_slack_homeserver_address: ""
matrix_mx_puppet_slack_homeserver_domain: '{{ matrix_domain }}'
matrix_mx_puppet_slack_appservice_address: 'http://matrix-mx-puppet-slack:{{ matrix_mx_puppet_slack_appservice_port }}'

matrix_mx_puppet_slack_oauth_enabled: true
matrix_mx_puppet_slack_oauth_redirect_path: "{{ matrix_mx_puppet_slack_path_prefix }}"
matrix_mx_puppet_slack_oauth_redirect_uri: '{{ matrix_mx_puppet_slack_scheme }}://{{ matrix_mx_puppet_slack_hostname }}{{ matrix_mx_puppet_slack_oauth_redirect_path }}'

# "@alice:example.com" to allow a specific user
# "@.*:example.com" to allow users on a specific homeserver
# "@.*" to allow anyone
matrix_mx_puppet_slack_provisioning_whitelist:
- "@.*:{{ matrix_domain | regex_escape }}"

# Leave empty to disable blacklist
# "@bob:example.com" to disallow a specific user
# "@.*:example.com" to disallow users on a specific homeserver
matrix_mx_puppet_slack_provisioning_blacklist: []

matrix_mx_puppet_slack_container_network: ""

matrix_mx_puppet_slack_container_additional_networks: "{{ matrix_mx_puppet_slack_container_additional_networks_auto + matrix_mx_puppet_slack_container_additional_networks_custom }}"
matrix_mx_puppet_slack_container_additional_networks_auto: []
matrix_mx_puppet_slack_container_additional_networks_custom: []

# matrix_mx_puppet_slack_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
# See `../templates/labels.j2` for details.
#
# To inject your own other container labels, see `matrix_mx_puppet_slack_container_labels_additional_labels`.
matrix_mx_puppet_slack_container_labels_traefik_enabled: true
matrix_mx_puppet_slack_container_labels_traefik_docker_network: "{{ matrix_mx_puppet_slack_container_network }}"
matrix_mx_puppet_slack_container_labels_traefik_entrypoints: web-secure
matrix_mx_puppet_slack_container_labels_traefik_tls_certResolver: default # noqa var-naming

# Controls whether labels will be added that expose mx-puppet-slack's public endpoint
matrix_mx_puppet_slack_container_labels_public_endpoint_enabled: true
matrix_mx_puppet_slack_container_labels_public_endpoint_hostname: "{{ matrix_mx_puppet_slack_hostname }}"
matrix_mx_puppet_slack_container_labels_public_endpoint_path_prefix: "{{ matrix_mx_puppet_slack_path_prefix }}"
matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_rule: "Host(`{{ matrix_mx_puppet_slack_container_labels_public_endpoint_hostname }}`) && PathPrefix(`{{ matrix_mx_puppet_slack_container_labels_public_endpoint_path_prefix }}`)"
matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_priority: 0
matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_entrypoints: "{{ matrix_mx_puppet_slack_container_labels_traefik_entrypoints }}"
matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls: "{{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_entrypoints != 'web' }}"
matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls_certResolver: "{{ matrix_mx_puppet_slack_container_labels_traefik_tls_certResolver }}" # noqa var-naming

# matrix_mx_puppet_slack_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
# See `../templates/labels.j2` for details.
#
# Example:
# matrix_mx_puppet_slack_container_labels_additional_labels: |
# my.label=1
# another.label="here"
matrix_mx_puppet_slack_container_labels_additional_labels: ''

# A list of extra arguments to pass to the container
matrix_mx_puppet_slack_container_extra_arguments: []

# List of systemd services that matrix-puppet-slack.service depends on.
matrix_mx_puppet_slack_systemd_required_services_list: "{{ matrix_mx_puppet_slack_systemd_required_services_list_default + matrix_mx_puppet_slack_systemd_required_services_list_auto + matrix_mx_puppet_slack_systemd_required_services_list_custom }}"
matrix_mx_puppet_slack_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_mx_puppet_slack_systemd_required_services_list_auto: []
matrix_mx_puppet_slack_systemd_required_services_list_custom: []

# List of systemd services that matrix-puppet-slack.service wants
matrix_mx_puppet_slack_systemd_wanted_services_list: []

matrix_mx_puppet_slack_appservice_token: ''
matrix_mx_puppet_slack_homeserver_token: ''

# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth).
matrix_mx_puppet_slack_login_shared_secret: ''

matrix_mx_puppet_slack_presence_enabled: true
matrix_mx_puppet_slack_presence_interval: 5000

# Database configuration, role uses 'sqlite' per default but playbook sets up Postgres by default
matrix_mx_puppet_slack_database_engine: sqlite

matrix_mx_puppet_slack_sqlite_database_path_local: "{{ matrix_mx_puppet_slack_data_path }}/database.db"
matrix_mx_puppet_slack_sqlite_database_path_in_container: "/data/database.db"

matrix_mx_puppet_slack_database_username: matrix_mx_puppet_slack
matrix_mx_puppet_slack_database_password: ~
matrix_mx_puppet_slack_database_hostname: ''
matrix_mx_puppet_slack_database_port: 5432
matrix_mx_puppet_slack_database_name: matrix_mx_puppet_slack
matrix_mx_puppet_slack_database_sslmode: disable

matrix_mx_puppet_slack_database_connection_string: 'postgresql://{{ matrix_mx_puppet_slack_database_username }}:{{ matrix_mx_puppet_slack_database_password }}@{{ matrix_mx_puppet_slack_database_hostname }}:{{ matrix_mx_puppet_slack_database_port }}/{{ matrix_mx_puppet_slack_database_name }}?sslmode={{ matrix_mx_puppet_slack_database_sslmode }}'

# Default configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it.
#
# For a more advanced customization, you can extend the default (see `matrix_mx_puppet_slack_configuration_extension_yaml`)
# or completely replace this variable with your own template.
matrix_mx_puppet_slack_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"

matrix_mx_puppet_slack_configuration_extension_yaml: |
# Your custom YAML configuration goes here.
# This configuration extends the default starting configuration (`matrix_mx_puppet_slack_configuration_yaml`).
#
# You can override individual variables from the default configuration, or introduce new ones.
#
# If you need something more special, you can take full control by
# completely redefining `matrix_mx_puppet_slack_configuration_yaml`.

matrix_mx_puppet_slack_configuration_extension: "{{ matrix_mx_puppet_slack_configuration_extension_yaml | from_yaml if matrix_mx_puppet_slack_configuration_extension_yaml | from_yaml is mapping else {} }}"

# Holds the final configuration (a combination of the default and its extension).
# You most likely don't need to touch this variable. Instead, see `matrix_mx_puppet_slack_configuration_yaml`.
matrix_mx_puppet_slack_configuration: "{{ matrix_mx_puppet_slack_configuration_yaml | from_yaml | combine(matrix_mx_puppet_slack_configuration_extension, recursive=True) }}"

matrix_mx_puppet_slack_registration_yaml: |
as_token: "{{ matrix_mx_puppet_slack_appservice_token }}"
hs_token: "{{ matrix_mx_puppet_slack_homeserver_token }}"
id: slack-puppet
namespaces:
users:
- exclusive: true
regex: '@_slackpuppet_.*:{{ matrix_mx_puppet_slack_homeserver_domain | regex_escape }}'
rooms: []
aliases:
- exclusive: true
regex: '#_slackpuppet_.*:{{ matrix_mx_puppet_slack_homeserver_domain | regex_escape }}'
protocols: []
rate_limited: false
sender_localpart: _slackpuppet_bot
url: {{ matrix_mx_puppet_slack_appservice_address }}
de.sorunome.msc2409.push_ephemeral: true
receive_ephemeral: true

matrix_mx_puppet_slack_registration: "{{ matrix_mx_puppet_slack_registration_yaml | from_yaml }}"

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-slack/tasks/main.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 Rodrigo Belem
# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- tags:
- setup-all
- setup-mx-puppet-slack
- install-all
- install-mx-puppet-slack
block:
- when: matrix_mx_puppet_slack_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"

- when: matrix_mx_puppet_slack_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml"

- tags:
- setup-all
- setup-mx-puppet-slack
block:
- when: not matrix_mx_puppet_slack_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"

+ 0
- 150
roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_install.yml Zobrazit soubor

@@ -1,150 +0,0 @@
# SPDX-FileCopyrightText: 2020 Rodrigo Belem
# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Ensure MX Puppet Slack paths exist
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: 0750
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- {path: "{{ matrix_mx_puppet_slack_base_path }}", when: true}
- {path: "{{ matrix_mx_puppet_slack_config_path }}", when: true}
- {path: "{{ matrix_mx_puppet_slack_data_path }}", when: true}
- {path: "{{ matrix_mx_puppet_slack_docker_src_files_path }}", when: "{{ matrix_mx_puppet_slack_container_image_self_build }}"}
when: matrix_mx_puppet_slack_enabled | bool and item.when | bool

- name: Check if an old database file already exists
ansible.builtin.stat:
path: "{{ matrix_mx_puppet_slack_base_path }}/database.db"
register: matrix_mx_puppet_slack_stat_database

- name: (Data relocation) Ensure matrix-mx-puppet-slack.service is stopped
ansible.builtin.service:
name: matrix-mx-puppet-slack
state: stopped
enabled: false
daemon_reload: true
failed_when: false
when: "matrix_mx_puppet_slack_stat_database.stat.exists"

- ansible.builtin.set_fact:
matrix_mx_puppet_slack_requires_restart: false

- when: "matrix_mx_puppet_slack_database_engine == 'postgres'"
block:
- name: Check if an SQLite database already exists
ansible.builtin.stat:
path: "{{ matrix_mx_puppet_slack_sqlite_database_path_local }}"
register: matrix_mx_puppet_slack_sqlite_database_path_local_stat_result

- when: "matrix_mx_puppet_slack_sqlite_database_path_local_stat_result.stat.exists | bool"
block:
- ansible.builtin.include_role:
name: galaxy/postgres
tasks_from: migrate_db_to_postgres
vars:
postgres_db_migration_request:
src: "{{ matrix_mx_puppet_slack_sqlite_database_path_local }}"
dst: "{{ matrix_mx_puppet_slack_database_connection_string }}"
caller: "{{ role_path | basename }}"
engine_variable_name: 'matrix_mx_puppet_slack_database_engine'
engine_old: 'sqlite'
systemd_services_to_stop: ['matrix-mx-puppet-slack.service']

- ansible.builtin.set_fact:
matrix_mx_puppet_slack_requires_restart: true

- name: Ensure MX Puppet Slack image is pulled
community.docker.docker_image:
name: "{{ matrix_mx_puppet_slack_docker_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_mx_puppet_slack_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_slack_docker_image_force_pull }}"
when: matrix_mx_puppet_slack_enabled | bool and not matrix_mx_puppet_slack_container_image_self_build
register: result
retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}"
until: result is not failed

- name: Ensure MX Puppet Slack repository is present on self build
ansible.builtin.git:
repo: "{{ matrix_mx_puppet_slack_container_image_self_build_repo }}"
dest: "{{ matrix_mx_puppet_slack_docker_src_files_path }}"
force: "yes"
version: "{{ matrix_mx_puppet_slack_container_image_self_build_version }}"
become: true
become_user: "{{ matrix_user_name }}"
register: matrix_mx_puppet_slack_git_pull_results
when: "matrix_mx_puppet_slack_enabled | bool and matrix_mx_puppet_slack_container_image_self_build"

- name: Ensure MX Puppet Slack Docker image is built
community.docker.docker_image:
name: "{{ matrix_mx_puppet_slack_docker_image }}"
source: build
force_source: "{{ matrix_mx_puppet_slack_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_slack_git_pull_results.changed }}"
build:
dockerfile: "{{ matrix_mx_puppet_slack_container_image_self_build_dockerfile_path }}"
path: "{{ matrix_mx_puppet_slack_docker_src_files_path }}"
pull: true
when: "matrix_mx_puppet_slack_enabled | bool and matrix_mx_puppet_slack_container_image_self_build"

- name: (Data relocation) Move mx-puppet-slack database file to ./data directory
ansible.builtin.command:
cmd: "mv {{ matrix_mx_puppet_slack_base_path }}/database.db {{ matrix_mx_puppet_slack_data_path }}/database.db"
creates: "{{ matrix_mx_puppet_slack_data_path }}/database.db"
removes: "{{ matrix_mx_puppet_slack_base_path }}/database.db"
when: "matrix_mx_puppet_slack_stat_database.stat.exists"

- name: Ensure mx-puppet-slack config.yaml installed
ansible.builtin.copy:
content: "{{ matrix_mx_puppet_slack_configuration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mx_puppet_slack_config_path }}/config.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure mx-puppet-slack slack-registration.yaml installed
ansible.builtin.copy:
content: "{{ matrix_mx_puppet_slack_registration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mx_puppet_slack_config_path }}/registration.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure mx-puppet-slack support files installed
ansible.builtin.template:
src: "{{ role_path }}/templates/{{ item }}.j2"
dest: "{{ matrix_mx_puppet_slack_base_path }}/{{ item }}"
mode: 0640
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- labels

- name: Ensure mx-puppet-slack container network is created
community.general.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_mx_puppet_slack_container_network }}"
driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"

- name: Ensure matrix-mx-puppet-slack.service installed
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-slack.service.j2"
dest: "/etc/systemd/system/matrix-mx-puppet-slack.service"
mode: 0644

- name: Ensure matrix-mx-puppet-slack.service restarted, if necessary
ansible.builtin.service:
name: "matrix-mx-puppet-slack.service"
state: restarted
daemon_reload: true
when: "matrix_mx_puppet_slack_requires_restart | bool"

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-slack/tasks/setup_uninstall.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 Rodrigo Belem
# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Check existence of matrix-mx-puppet-slack service
ansible.builtin.stat:
path: "/etc/systemd/system/matrix-mx-puppet-slack.service"
register: matrix_mx_puppet_slack_service_stat

- when: matrix_mx_puppet_slack_service_stat.stat.exists | bool
block:
- name: Ensure matrix-mx-puppet-slack is stopped
ansible.builtin.service:
name: matrix-mx-puppet-slack
state: stopped
enabled: false
daemon_reload: true

- name: Ensure matrix-mx-puppet-slack.service doesn't exist
ansible.builtin.file:
path: "/etc/systemd/system/matrix-mx-puppet-slack.service"
state: absent

+ 0
- 32
roles/custom/matrix-bridge-mx-puppet-slack/tasks/validate_config.yml Zobrazit soubor

@@ -1,32 +0,0 @@
# SPDX-FileCopyrightText: 2020 Rodrigo Belem
# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Fail if required mx-puppet-slack settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items:
- {'name': 'matrix_mx_puppet_slack_hostname', when: true}
- {'name': 'matrix_mx_puppet_slack_path_prefix', when: true}
- {'name': 'matrix_mx_puppet_slack_appservice_token', when: true}
- {'name': 'matrix_mx_puppet_slack_homeserver_address', when: true}
- {'name': 'matrix_mx_puppet_slack_homeserver_token', when: true}
- {'name': 'matrix_mx_puppet_slack_database_hostname', when: "{{ matrix_mx_puppet_slack_database_engine == 'postgres' }}"}
- {'name': 'matrix_mx_puppet_slack_container_network', when: true}

- name: (Deprecation) Catch and report renamed mx-puppet-slack settings
ansible.builtin.fail:
msg: >-
Your configuration contains a variable, which now has a different name.
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_mx_puppet_slack_redirect_path', 'new': 'matrix_mx_puppet_slack_oauth_redirect_path, but setting matrix_mx_puppet_slack_path_prefix is better'}
- {'old': 'matrix_mx_puppet_slack_redirect_uri', 'new': '<matrix_mx_puppet_slack_oauth_redirect_uri, but controlling matrix_mx_puppet_slack_scheme/matrix_mx_puppet_slack_hostname/matrix_mx_puppet_slack_path_prefix is better'}
- {'old': 'matrix_mx_puppet_slack_docker_image_name_prefix', 'new': 'matrix_mx_puppet_slack_docker_image_registry_prefix'}

+ 0
- 83
roles/custom/matrix-bridge-mx-puppet-slack/templates/config.yaml.j2 Zobrazit soubor

@@ -1,83 +0,0 @@
#jinja2: lstrip_blocks: True
bridge:
# Port to host the bridge on
# Used for communication between the homeserver and the bridge
port: {{ matrix_mx_puppet_slack_appservice_port }}
# The host connections to the bridge's webserver are allowed from
bindAddress: 0.0.0.0
# Public domain of the homeserver
domain: {{ matrix_mx_puppet_slack_homeserver_domain }}
# Reachable URL of the Matrix homeserver
homeserverUrl: {{ matrix_mx_puppet_slack_homeserver_address }}
{% if matrix_mx_puppet_slack_login_shared_secret != '' %}
loginSharedSecretMap:
{{ matrix_domain }}: {{ matrix_mx_puppet_slack_login_shared_secret }}
{% endif %}


# Slack OAuth settings. Create a slack app at https://api.slack.com/apps
oauth:
enabled: {{ matrix_mx_puppet_slack_oauth_enabled | to_json }}
# Slack app credentials.
# N.B. This must be quoted so YAML does not parse it as a float.
clientId: '{{ matrix_mx_puppet_slack_oauth_client_id }}'
clientSecret: {{ matrix_mx_puppet_slack_oauth_client_secret|to_json }}
# Path where to listen for OAuth redirect callbacks.
redirectPath: {{ matrix_mx_puppet_slack_oauth_redirect_path | to_json }}
# Set up proxying from https://your.domain/redirect_path to http://bindAddress:port/redirect_path,
# then set this field and the Slack app redirect URI field to the former.
redirectUri: {{ matrix_mx_puppet_slack_oauth_redirect_uri | to_json }}

presence:
# Bridge Discord online/offline status
enabled: {{ matrix_mx_puppet_slack_presence_enabled | to_json }}
# How often to send status to the homeserver in milliseconds
interval: {{ matrix_mx_puppet_slack_presence_interval | to_json }}

provisioning:
# Regex of Matrix IDs allowed to use the puppet bridge
whitelist: {{ matrix_mx_puppet_slack_provisioning_whitelist|to_json }}
# Allow a specific user
#- "@alice:example\\.com"
# Allow users on a specific homeserver
#- "@.*:example\\.com"
# Allow anyone
#- ".*"
# Regex of Matrix IDs forbidden from using the puppet bridge
#blacklist:
# Disallow a specific user
#- "@bob:example\\.com"
# Disallow users on a specific homeserver
#- "@.*:example\\.com"
blacklist: {{ matrix_mx_puppet_slack_provisioning_blacklist|to_json }}

# Shared secret for the provisioning API for use by integration managers.
# If this is not set, the provisioning API will not be enabled.
#sharedSecret: random string
# Path prefix for the provisioning API. /v1 will be appended to the prefix automatically.
apiPrefix: /_matrix/provision

database:
{% if matrix_mx_puppet_slack_database_engine == 'postgres' %}
# Use Postgres as a database backend
# If set, will be used instead of SQLite3
# Connection string to connect to the Postgres instance
# with username "user", password "pass", host "localhost" and database name "dbname".
# Modify each value as necessary
connString: {{ matrix_mx_puppet_slack_database_connection_string|to_json }}
{% else %}
# Use SQLite3 as a database backend
# The name of the database file
filename: {{ matrix_mx_puppet_slack_sqlite_database_path_in_container|to_json }}
{% endif %}

logging:
# Log level of console output
# Allowed values starting with most verbose:
# silly, debug, verbose, info, warn, error
console: warn
# Date and time formatting
lineDateFormat: MMM-D HH:mm:ss.SSS
# Logging files
# Log files are rotated daily by default
files: []

+ 0
- 8
roles/custom/matrix-bridge-mx-puppet-slack/templates/config.yaml.j2.license Zobrazit soubor

@@ -1,8 +0,0 @@
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Hugues Morisset
SPDX-FileCopyrightText: 2020 MDAD project contributors
SPDX-FileCopyrightText: 2021 Marcel Ackermann
SPDX-FileCopyrightText: 2022 Jim Myhrberg
SPDX-FileCopyrightText: 2022 Nikita Chernyi

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 47
roles/custom/matrix-bridge-mx-puppet-slack/templates/labels.j2 Zobrazit soubor

@@ -1,47 +0,0 @@
{#
SPDX-FileCopyrightText: 2024 Slavi Pantaleev

SPDX-License-Identifier: AGPL-3.0-or-later
#}

{% if matrix_mx_puppet_slack_container_labels_traefik_enabled %}
traefik.enable=true

{% if matrix_mx_puppet_slack_container_labels_traefik_docker_network %}
traefik.docker.network={{ matrix_mx_puppet_slack_container_labels_traefik_docker_network }}
{% endif %}

traefik.http.services.matrix-mx-puppet-slack.loadbalancer.server.port={{ matrix_mx_puppet_slack_appservice_port }}

{% if matrix_mx_puppet_slack_container_labels_public_endpoint_enabled %}
############################################################
# #
# Public #
# #
############################################################

traefik.http.routers.matrix-mx-puppet-slack-public.rule={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_rule }}

{% if matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_priority | int > 0 %}
traefik.http.routers.matrix-mx-puppet-slack-public.priority={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_priority }}
{% endif %}

traefik.http.routers.matrix-mx-puppet-slack-public.service=matrix-mx-puppet-slack
traefik.http.routers.matrix-mx-puppet-slack-public.entrypoints={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_entrypoints }}

traefik.http.routers.matrix-mx-puppet-slack-public.tls={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls | to_json }}
{% if matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls %}
traefik.http.routers.matrix-mx-puppet-slack-public.tls.certResolver={{ matrix_mx_puppet_slack_container_labels_public_endpoint_traefik_tls_certResolver }}
{% endif %}

############################################################
# #
# /Public #
# #
############################################################
{% endif %}


{% endif %}

{{ matrix_mx_puppet_slack_container_labels_additional_labels }}

+ 0
- 52
roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2 Zobrazit soubor

@@ -1,52 +0,0 @@
#jinja2: lstrip_blocks: True
[Unit]
Description=Matrix Mx Puppet Slack bridge
{% for service in matrix_mx_puppet_slack_systemd_required_services_list %}
Requires={{ service }}
After={{ service }}
{% endfor %}
{% for service in matrix_mx_puppet_slack_systemd_wanted_services_list %}
Wants={{ service }}
{% endfor %}
DefaultDependencies=no

[Service]
Type=simple
Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}"
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-slack 2>/dev/null || true'
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-slack 2>/dev/null || true'

ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--rm \
--name=matrix-mx-puppet-slack \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--network={{ matrix_mx_puppet_slack_container_network }} \
{% if matrix_mx_puppet_slack_container_http_host_bind_port %}
-p {{ matrix_mx_puppet_slack_container_http_host_bind_port }}:{{ matrix_mx_puppet_slack_appservice_port }} \
{% endif %}
-e CONFIG_PATH=/config/config.yaml \
-e REGISTRATION_PATH=/config/registration.yaml \
--mount type=bind,src={{ matrix_mx_puppet_slack_config_path }},dst=/config \
--mount type=bind,src={{ matrix_mx_puppet_slack_data_path }},dst=/data \
--label-file={{ matrix_mx_puppet_slack_base_path }}/labels \
{% for arg in matrix_mx_puppet_slack_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_mx_puppet_slack_docker_image }}

{% for network in matrix_mx_puppet_slack_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mx-puppet-slack
{% endfor %}

ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-slack

ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-slack 2>/dev/null || true'
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-slack 2>/dev/null || true'
Restart=always
RestartSec=30
SyslogIdentifier=matrix-mx-puppet-slack

[Install]
WantedBy=multi-user.target

+ 0
- 6
roles/custom/matrix-bridge-mx-puppet-slack/templates/systemd/matrix-mx-puppet-slack.service.j2.license Zobrazit soubor

@@ -1,6 +0,0 @@
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Chris van Dijk
SPDX-FileCopyrightText: 2020 Rodrigo Belem
SPDX-FileCopyrightText: 2020 Scott Crossen

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 184
roles/custom/matrix-bridge-mx-puppet-twitter/defaults/main.yml Zobrazit soubor

@@ -1,184 +0,0 @@
# SPDX-FileCopyrightText: 2020 - 2021 MDAD project contributors
# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2020 Tulir Asokan
# SPDX-FileCopyrightText: 2021 Ahmad Haghighi
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2022 Nikita Chernyi
# SPDX-FileCopyrightText: 2023 Samuel Meenzen
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

# Mx Puppet Twitter is a Matrix <-> Twitter bridge
# Project source code URL: https://github.com/Sorunome/mx-puppet-twitter

matrix_mx_puppet_twitter_enabled: true

matrix_mx_puppet_twitter_scheme: https
matrix_mx_puppet_twitter_hostname: ''
matrix_mx_puppet_twitter_path_prefix: /twitter/webhook

matrix_mx_puppet_twitter_container_image_self_build: false
matrix_mx_puppet_twitter_container_image_self_build_repo: "https://github.com/Sorunome/mx-puppet-twitter.git"

# Controls whether the mx-puppet-twitter container exposes its HTTP port (tcp/8432 in the container).
#
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:8432"), or empty string to not expose.
matrix_mx_puppet_twitter_container_http_host_bind_port: ''

# renovate: datasource=docker depName=sorunome/mx-puppet-twitter
matrix_mx_puppet_twitter_version: latest
matrix_mx_puppet_twitter_docker_image: "{{ matrix_mx_puppet_twitter_docker_image_registry_prefix }}sorunome/mx-puppet-twitter:{{ matrix_mx_puppet_twitter_version }}"
matrix_mx_puppet_twitter_docker_image_registry_prefix: "{{ 'localhost/' if matrix_mx_puppet_twitter_container_image_self_build else matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream }}"
matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream: "{{ matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream_default }}"
matrix_mx_puppet_twitter_docker_image_registry_prefix_upstream_default: "docker.io/"
matrix_mx_puppet_twitter_docker_image_force_pull: "{{ matrix_mx_puppet_twitter_docker_image.endswith(':latest') }}"

matrix_mx_puppet_twitter_base_path: "{{ matrix_base_data_path }}/mx-puppet-twitter"
matrix_mx_puppet_twitter_config_path: "{{ matrix_mx_puppet_twitter_base_path }}/config"
matrix_mx_puppet_twitter_data_path: "{{ matrix_mx_puppet_twitter_base_path }}/data"
matrix_mx_puppet_twitter_docker_src_files_path: "{{ matrix_mx_puppet_twitter_base_path }}/docker-src"

matrix_mx_puppet_twitter_appservice_port: "8432"

matrix_mx_puppet_twitter_homeserver_address: ""
matrix_mx_puppet_twitter_homeserver_domain: '{{ matrix_domain }}'
matrix_mx_puppet_twitter_appservice_address: 'http://matrix-mx-puppet-twitter:{{ matrix_mx_puppet_twitter_appservice_port }}'

matrix_mx_puppet_twitter_consumer_key: ''
matrix_mx_puppet_twitter_consumer_secret: ''
matrix_mx_puppet_twitter_access_token: ''
matrix_mx_puppet_twitter_access_token_secret: ''
matrix_mx_puppet_twitter_environment: ''
matrix_mx_puppet_twitter_server_path: "{{ matrix_mx_puppet_twitter_path_prefix }}"
matrix_mx_puppet_twitter_server_url: '{{ matrix_homeserver_url }}{{ matrix_mx_puppet_twitter_server_path }}'

# "@alice:example.com" to allow a specific user
# "@.*:example.com" to allow users on a specific homeserver
# "@.*" to allow anyone
matrix_mx_puppet_twitter_provisioning_whitelist:
- "@.*:{{ matrix_domain | regex_escape }}"

# Leave empty to disable blacklist
# "@bob:example.com" to disallow a specific user
# "@.*:example.com" to disallow users on a specific homeserver
matrix_mx_puppet_twitter_provisioning_blacklist: []

matrix_mx_puppet_twitter_container_network: ""

matrix_mx_puppet_twitter_container_additional_networks: "{{ matrix_mx_puppet_twitter_container_additional_networks_auto + matrix_mx_puppet_twitter_container_additional_networks_custom }}"
matrix_mx_puppet_twitter_container_additional_networks_auto: []
matrix_mx_puppet_twitter_container_additional_networks_custom: []

# matrix_mx_puppet_twitter_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
# See `../templates/labels.j2` for details.
#
# To inject your own other container labels, see `matrix_mx_puppet_twitter_container_labels_additional_labels`.
matrix_mx_puppet_twitter_container_labels_traefik_enabled: true
matrix_mx_puppet_twitter_container_labels_traefik_docker_network: "{{ matrix_mx_puppet_twitter_container_network }}"
matrix_mx_puppet_twitter_container_labels_traefik_entrypoints: web-secure
matrix_mx_puppet_twitter_container_labels_traefik_tls_certResolver: default # noqa var-naming

# Controls whether labels will be added that expose mx-puppet-twitter's public endpoint
matrix_mx_puppet_twitter_container_labels_public_endpoint_enabled: true
matrix_mx_puppet_twitter_container_labels_public_endpoint_hostname: "{{ matrix_mx_puppet_twitter_hostname }}"
matrix_mx_puppet_twitter_container_labels_public_endpoint_path_prefix: "{{ matrix_mx_puppet_twitter_path_prefix }}"
matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_rule: "Host(`{{ matrix_mx_puppet_twitter_container_labels_public_endpoint_hostname }}`) && PathPrefix(`{{ matrix_mx_puppet_twitter_container_labels_public_endpoint_path_prefix }}`)"
matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_priority: 0
matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_entrypoints: "{{ matrix_mx_puppet_twitter_container_labels_traefik_entrypoints }}"
matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls: "{{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_entrypoints != 'web' }}"
matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls_certResolver: "{{ matrix_mx_puppet_twitter_container_labels_traefik_tls_certResolver }}" # noqa var-naming

# matrix_mx_puppet_twitter_container_labels_additional_labels contains a multiline string with additional labels to add to the container label file.
# See `../templates/labels.j2` for details.
#
# Example:
# matrix_mx_puppet_twitter_container_labels_additional_labels: |
# my.label=1
# another.label="here"
matrix_mx_puppet_twitter_container_labels_additional_labels: ''

# A list of extra arguments to pass to the container
matrix_mx_puppet_twitter_container_extra_arguments: []

# List of systemd services that mx-puppet-twitter.service depends on.
matrix_mx_puppet_twitter_systemd_required_services_list: "{{ matrix_mx_puppet_twitter_systemd_required_services_list_default + matrix_mx_puppet_twitter_systemd_required_services_list_auto + matrix_mx_puppet_twitter_systemd_required_services_list_custom }}"
matrix_mx_puppet_twitter_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"
matrix_mx_puppet_twitter_systemd_required_services_list_auto: []
matrix_mx_puppet_twitter_systemd_required_services_list_custom: []

# List of systemd services that mx-puppet-twitter.service wants
matrix_mx_puppet_twitter_systemd_wanted_services_list: []

matrix_mx_puppet_twitter_appservice_token: ''
matrix_mx_puppet_twitter_homeserver_token: ''

# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth).
matrix_mx_puppet_twitter_login_shared_secret: ''

matrix_mx_puppet_twitter_presence_enabled: true
matrix_mx_puppet_twitter_presence_interval: 5000

# Database configuration
matrix_mx_puppet_twitter_database_engine: sqlite

matrix_mx_puppet_twitter_sqlite_database_path_local: "{{ matrix_mx_puppet_twitter_data_path }}/database.db"
matrix_mx_puppet_twitter_sqlite_database_path_in_container: "/data/database.db"

matrix_mx_puppet_twitter_database_username: mx_puppet_twitter
matrix_mx_puppet_twitter_database_password: ~
matrix_mx_puppet_twitter_database_hostname: ''
matrix_mx_puppet_twitter_database_port: 5432
matrix_mx_puppet_twitter_database_name: matrix_mx_puppet_twitter
matrix_mx_puppet_twitter_database_sslmode: disable

matrix_mx_puppet_twitter_database_connection_string: 'postgresql://{{ matrix_mx_puppet_twitter_database_username }}:{{ matrix_mx_puppet_twitter_database_password }}@{{ matrix_mx_puppet_twitter_database_hostname }}:{{ matrix_mx_puppet_twitter_database_port }}/{{ matrix_mx_puppet_twitter_database_name }}?sslmode={{ matrix_mx_puppet_twitter_database_sslmode }}'

# Default configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it.
#
# For a more advanced customization, you can extend the default (see `matrix_mx_puppet_twitter_configuration_extension_yaml`)
# or completely replace this variable with your own template.
matrix_mx_puppet_twitter_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}"

matrix_mx_puppet_twitter_configuration_extension_yaml: |
# Your custom YAML configuration goes here.
# This configuration extends the default starting configuration (`matrix_mx_puppet_twitter_configuration_yaml`).
#
# You can override individual variables from the default configuration, or introduce new ones.
#
# If you need something more special, you can take full control by
# completely redefining `matrix_mx_puppet_twitter_configuration_yaml`.

matrix_mx_puppet_twitter_configuration_extension: "{{ matrix_mx_puppet_twitter_configuration_extension_yaml | from_yaml if matrix_mx_puppet_twitter_configuration_extension_yaml | from_yaml is mapping else {} }}"

# Holds the final configuration (a combination of the default and its extension).
# You most likely don't need to touch this variable. Instead, see `matrix_mx_puppet_twitter_configuration_yaml`.
matrix_mx_puppet_twitter_configuration: "{{ matrix_mx_puppet_twitter_configuration_yaml | from_yaml | combine(matrix_mx_puppet_twitter_configuration_extension, recursive=True) }}"

# The prefix for user IDs and aliases
matrix_mx_puppet_twitter_namespace_prefix: _twitterpuppet_
matrix_mx_puppet_twitter_bot_localpart: _twitterpuppet_bot

matrix_mx_puppet_twitter_registration_yaml: |
as_token: "{{ matrix_mx_puppet_twitter_appservice_token }}"
hs_token: "{{ matrix_mx_puppet_twitter_homeserver_token }}"
id: twitter-puppet
namespaces:
users:
- exclusive: true
regex: '@{{ matrix_mx_puppet_twitter_namespace_prefix | regex_escape }}.*:{{ matrix_mx_puppet_twitter_homeserver_domain | regex_escape }}'
rooms: []
aliases:
- exclusive: true
regex: '#{{ matrix_mx_puppet_twitter_namespace_prefix | regex_escape }}.*:{{ matrix_mx_puppet_twitter_homeserver_domain | regex_escape }}'
protocols: []
rate_limited: false
sender_localpart: "{{ matrix_mx_puppet_twitter_bot_localpart }}"
url: {{ matrix_mx_puppet_twitter_appservice_address }}
de.sorunome.msc2409.push_ephemeral: true
receive_ephemeral: true

matrix_mx_puppet_twitter_registration: "{{ matrix_mx_puppet_twitter_registration_yaml | from_yaml }}"

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-twitter/tasks/main.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 Tulir Asokan
# SPDX-FileCopyrightText: 2022 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- tags:
- setup-all
- setup-mx-puppet-twitter
- install-all
- install-mx-puppet-twitter
block:
- when: matrix_mx_puppet_twitter_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/validate_config.yml"

- when: matrix_mx_puppet_twitter_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_install.yml"

- tags:
- setup-all
- setup-mx-puppet-twitter
block:
- when: not matrix_mx_puppet_twitter_enabled | bool
ansible.builtin.include_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"

+ 0
- 155
roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_install.yml Zobrazit soubor

@@ -1,155 +0,0 @@
# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2020 Stuart Mumford
# SPDX-FileCopyrightText: 2020 Tulir Asokan
# SPDX-FileCopyrightText: 2022 Jim Myhrberg
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2022 Nikita Chernyi
# SPDX-FileCopyrightText: 2022 Sebastian Gumprich
# SPDX-FileCopyrightText: 2024 David Mehren
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Ensure MX Puppet Twitter paths exist
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: 0750
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- {path: "{{ matrix_mx_puppet_twitter_base_path }}", when: true}
- {path: "{{ matrix_mx_puppet_twitter_config_path }}", when: true}
- {path: "{{ matrix_mx_puppet_twitter_data_path }}", when: true}
- {path: "{{ matrix_mx_puppet_twitter_docker_src_files_path }}", when: "{{ matrix_mx_puppet_twitter_container_image_self_build }}"}
when: matrix_mx_puppet_twitter_enabled | bool and item.when | bool

- name: Check if an old database file already exists
ansible.builtin.stat:
path: "{{ matrix_mx_puppet_twitter_base_path }}/database.db"
register: matrix_mx_puppet_twitter_stat_database

- name: (Data relocation) Ensure matrix-mx-puppet-twitter.service is stopped
ansible.builtin.service:
name: matrix-mx-puppet-twitter
state: stopped
enabled: false
daemon_reload: true
failed_when: false
when: "matrix_mx_puppet_twitter_stat_database.stat.exists"

- name: (Data relocation) Move mx-puppet-twitter database file to ./data directory
ansible.builtin.command:
cmd: "mv {{ matrix_mx_puppet_twitter_base_path }}/database.db {{ matrix_mx_puppet_twitter_data_path }}/database.db"
creates: "{{ matrix_mx_puppet_twitter_data_path }}/database.db"
removes: "{{ matrix_mx_puppet_twitter_base_path }}/database.db"
when: "matrix_mx_puppet_twitter_stat_database.stat.exists"

- ansible.builtin.set_fact:
matrix_mx_puppet_twitter_requires_restart: false

- when: "matrix_mx_puppet_twitter_database_engine == 'postgres'"
block:
- name: Check if an SQLite database already exists
ansible.builtin.stat:
path: "{{ matrix_mx_puppet_twitter_sqlite_database_path_local }}"
register: matrix_mx_puppet_twitter_sqlite_database_path_local_stat_result

- when: "matrix_mx_puppet_twitter_sqlite_database_path_local_stat_result.stat.exists | bool"
block:
- ansible.builtin.include_role:
name: galaxy/postgres
tasks_from: migrate_db_to_postgres
vars:
postgres_db_migration_request:
src: "{{ matrix_mx_puppet_twitter_sqlite_database_path_local }}"
dst: "{{ matrix_mx_puppet_twitter_database_connection_string }}"
caller: "{{ role_path | basename }}"
engine_variable_name: 'matrix_mx_puppet_twitter_database_engine'
engine_old: 'sqlite'
systemd_services_to_stop: ['matrix-mx-puppet-twitter.service']

- ansible.builtin.set_fact:
matrix_mx_puppet_twitter_requires_restart: true

- name: Ensure MX Puppet Twitter image is pulled
community.docker.docker_image:
name: "{{ matrix_mx_puppet_twitter_docker_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_mx_puppet_twitter_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_twitter_docker_image_force_pull }}"
when: matrix_mx_puppet_twitter_enabled | bool and not matrix_mx_puppet_twitter_container_image_self_build
register: result
retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}"
until: result is not failed

- name: Ensure MX Puppet Twitter repository is present on self build
ansible.builtin.git:
repo: "{{ matrix_mx_puppet_twitter_container_image_self_build_repo }}"
version: master
dest: "{{ matrix_mx_puppet_twitter_docker_src_files_path }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
register: matrix_mx_puppet_twitter_git_pull_results
when: "matrix_mx_puppet_twitter_enabled | bool and matrix_mx_puppet_twitter_container_image_self_build"

- name: Ensure MX Puppet Twitter Docker image is built
community.docker.docker_image:
name: "{{ matrix_mx_puppet_twitter_docker_image }}"
source: build
force_source: "{{ matrix_mx_puppet_twitter_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_twitter_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_mx_puppet_twitter_docker_src_files_path }}"
pull: true
when: "matrix_mx_puppet_twitter_enabled | bool and matrix_mx_puppet_twitter_container_image_self_build"

- name: Ensure mx-puppet-twitter config.yaml installed
ansible.builtin.copy:
content: "{{ matrix_mx_puppet_twitter_configuration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mx_puppet_twitter_config_path }}/config.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure mx-puppet-twitter twitter-registration.yaml installed
ansible.builtin.copy:
content: "{{ matrix_mx_puppet_twitter_registration | to_nice_yaml(indent=2, width=999999) }}"
dest: "{{ matrix_mx_puppet_twitter_config_path }}/registration.yaml"
mode: 0644
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"

- name: Ensure mx-puppet-twitter support files installed
ansible.builtin.template:
src: "{{ role_path }}/templates/{{ item }}.j2"
dest: "{{ matrix_mx_puppet_twitter_base_path }}/{{ item }}"
mode: 0640
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- labels

- name: Ensure mx-puppet-twitter container network is created
community.general.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_mx_puppet_twitter_container_network }}"
driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"

- name: Ensure matrix-mx-puppet-twitter.service installed
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-twitter.service.j2"
dest: "/etc/systemd/system/matrix-mx-puppet-twitter.service"
mode: 0644

- name: Ensure matrix-mx-puppet-twitter.service restarted, if necessary
ansible.builtin.service:
name: "matrix-mx-puppet-twitter.service"
state: restarted
daemon_reload: true
when: "matrix_mx_puppet_twitter_requires_restart | bool"

+ 0
- 26
roles/custom/matrix-bridge-mx-puppet-twitter/tasks/setup_uninstall.yml Zobrazit soubor

@@ -1,26 +0,0 @@
# SPDX-FileCopyrightText: 2020 Tulir Asokan
# SPDX-FileCopyrightText: 2021 - 2022 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 Marko Weltzer
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Check existence of matrix-mx-puppet-twitter service
ansible.builtin.stat:
path: "/etc/systemd/system/matrix-mx-puppet-twitter.service"
register: matrix_mx_puppet_twitter_service_stat

- when: matrix_mx_puppet_twitter_service_stat.stat.exists | bool
block:
- name: Ensure matrix-mx-puppet-twitter is stopped
ansible.builtin.service:
name: matrix-mx-puppet-twitter
state: stopped
enabled: false
daemon_reload: true

- name: Ensure matrix-mx-puppet-twitter.service doesn't exist
ansible.builtin.file:
path: "/etc/systemd/system/matrix-mx-puppet-twitter.service"
state: absent

+ 0
- 32
roles/custom/matrix-bridge-mx-puppet-twitter/tasks/validate_config.yml Zobrazit soubor

@@ -1,32 +0,0 @@
# SPDX-FileCopyrightText: 2020 Tulir Asokan
# SPDX-FileCopyrightText: 2022 - 2025 Slavi Pantaleev
# SPDX-FileCopyrightText: 2025 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later

---

- name: Fail if required mx-puppet-twitter settings not defined
ansible.builtin.fail:
msg: >-
You need to define a required configuration setting (`{{ item.name }}`).
when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0"
with_items:
- {'name': 'matrix_mx_puppet_twitter_hostname', when: true}
- {'name': 'matrix_mx_puppet_twitter_path_prefix', when: true}
- {'name': 'matrix_mx_puppet_twitter_appservice_token', when: true}
- {'name': 'matrix_mx_puppet_twitter_homeserver_address', when: true}
- {'name': 'matrix_mx_puppet_twitter_homeserver_token', when: true}
- {'name': 'matrix_mx_puppet_twitter_database_hostname', when: "{{ matrix_mx_puppet_twitter_database_engine == 'postgres' }}"}
- {'name': 'matrix_mx_puppet_twitter_container_network', when: true}

- name: (Deprecation) Catch and report renamed mx-puppet-twitter settings
ansible.builtin.fail:
msg: >-
Your configuration contains a variable, which now has a different name.
Please rename the variable (`{{ item.old }}` -> `{{ item.new }}`) on your configuration file (vars.yml).
when: "lookup('ansible.builtin.varnames', ('^' + item.old + '$'), wantlist=True) | length > 0"
with_items:
- {'old': 'matrix_mx_puppet_twitter_webhook_path', 'new': '<matrix_mx_puppet_twitter_server_path, but setting matrix_mx_puppet_twitter_path_prefix is better'}
- {'old': 'matrix_mx_puppet_twitter_webhook_url', 'new': 'matrix_mx_puppet_twitter_server_url, but controlling matrix_mx_puppet_twitter_scheme/matrix_mx_puppet_twitter_hostname/matrix_mx_puppet_twitter_path_prefix is better'}
- {'old': 'matrix_mx_puppet_twitter_docker_image_name_prefix', 'new': 'matrix_mx_puppet_twitter_docker_image_registry_prefix'}

+ 0
- 79
roles/custom/matrix-bridge-mx-puppet-twitter/templates/config.yaml.j2 Zobrazit soubor

@@ -1,79 +0,0 @@
#jinja2: lstrip_blocks: True
bridge:
# Port to host the bridge on
# Used for communication between the homeserver and the bridge
port: {{ matrix_mx_puppet_twitter_appservice_port }}
# The host connections to the bridge's webserver are allowed from
bindAddress: 0.0.0.0
# Public domain of the homeserver
domain: {{ matrix_mx_puppet_twitter_homeserver_domain }}
# Reachable URL of the Matrix homeserver
homeserverUrl: {{ matrix_mx_puppet_twitter_homeserver_address }}
{% if matrix_mx_puppet_twitter_login_shared_secret != '' %}
loginSharedSecretMap:
{{ matrix_domain }}: {{ matrix_mx_puppet_twitter_login_shared_secret }}
{% endif %}

twitter:
consumerKey: {{ matrix_mx_puppet_twitter_consumer_key | to_json }}
consumerSecret: {{ matrix_mx_puppet_twitter_consumer_secret | to_json }}
accessToken: {{ matrix_mx_puppet_twitter_access_token | to_json }}
accessTokenSecret: {{ matrix_mx_puppet_twitter_access_token_secret | to_json }}
environment: {{ matrix_mx_puppet_twitter_environment | to_json }}
server:
url: {{ matrix_mx_puppet_twitter_server_url | to_json }}
path: {{ matrix_mx_puppet_twitter_server_path | to_json }}

presence:
# Bridge Twitter online/offline status
enabled: {{ matrix_mx_puppet_twitter_presence_enabled | to_json }}
# How often to send status to the homeserver in milliseconds
interval: {{ matrix_mx_puppet_twitter_presence_interval | to_json }}

provisioning:
# Regex of Matrix IDs allowed to use the puppet bridge
whitelist: {{ matrix_mx_puppet_twitter_provisioning_whitelist|to_json }}
# Allow a specific user
#- "@alice:example\\.com"
# Allow users on a specific homeserver
#- "@.*:example\\.com"
# Allow anyone
#- ".*"
# Regex of Matrix IDs forbidden from using the puppet bridge
#blacklist:
# Disallow a specific user
#- "@bob:example\\.com"
# Disallow users on a specific homeserver
#- "@.*:example\\.com"
blacklist: {{ matrix_mx_puppet_twitter_provisioning_blacklist|to_json }}

# Shared secret for the provisioning API for use by integration managers.
# If this is not set, the provisioning API will not be enabled.
#sharedSecret: random string
# Path prefix for the provisioning API. /v1 will be appended to the prefix automatically.
apiPrefix: /_matrix/provision

database:
{% if matrix_mx_puppet_twitter_database_engine == 'postgres' %}
# Use Postgres as a database backend
# If set, will be used instead of SQLite3
# Connection string to connect to the Postgres instance
# with username "user", password "pass", host "localhost" and database name "dbname".
# Modify each value as necessary
connString: {{ matrix_mx_puppet_twitter_database_connection_string|to_json }}
{% else %}
# Use SQLite3 as a database backend
# The name of the database file
filename: {{ matrix_mx_puppet_twitter_sqlite_database_path_in_container|to_json }}
{% endif %}

logging:
# Log level of console output
# Allowed values starting with most verbose:
# silly, debug, verbose, info, warn, error
console: warn
# Date and time formatting
lineDateFormat: MMM-D HH:mm:ss.SSS
# Logging files
# Log files are rotated daily by default
files: []

+ 0
- 5
roles/custom/matrix-bridge-mx-puppet-twitter/templates/config.yaml.j2.license Zobrazit soubor

@@ -1,5 +0,0 @@
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 MDAD project contributors
SPDX-FileCopyrightText: 2020 Tulir Asokan

SPDX-License-Identifier: AGPL-3.0-or-later

+ 0
- 47
roles/custom/matrix-bridge-mx-puppet-twitter/templates/labels.j2 Zobrazit soubor

@@ -1,47 +0,0 @@
{#
SPDX-FileCopyrightText: 2024 Slavi Pantaleev

SPDX-License-Identifier: AGPL-3.0-or-later
#}

{% if matrix_mx_puppet_twitter_container_labels_traefik_enabled %}
traefik.enable=true

{% if matrix_mx_puppet_twitter_container_labels_traefik_docker_network %}
traefik.docker.network={{ matrix_mx_puppet_twitter_container_labels_traefik_docker_network }}
{% endif %}

traefik.http.services.martix-mx-puppet-twitter.loadbalancer.server.port={{ matrix_mx_puppet_twitter_appservice_port }}

{% if matrix_mx_puppet_twitter_container_labels_public_endpoint_enabled %}
############################################################
# #
# Public #
# #
############################################################

traefik.http.routers.matrix-mx-puppet-twitter-public.rule={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_rule }}

{% if matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_priority | int > 0 %}
traefik.http.routers.matrix-mx-puppet-twitter-public.priority={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_priority }}
{% endif %}

traefik.http.routers.matrix-mx-puppet-twitter-public.service=martix-mx-puppet-twitter
traefik.http.routers.matrix-mx-puppet-twitter-public.entrypoints={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_entrypoints }}

traefik.http.routers.matrix-mx-puppet-twitter-public.tls={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls | to_json }}
{% if matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls %}
traefik.http.routers.matrix-mx-puppet-twitter-public.tls.certResolver={{ matrix_mx_puppet_twitter_container_labels_public_endpoint_traefik_tls_certResolver }}
{% endif %}

############################################################
# #
# /Public #
# #
############################################################
{% endif %}


{% endif %}

{{ matrix_mx_puppet_twitter_container_labels_additional_labels }}

+ 0
- 51
roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2 Zobrazit soubor

@@ -1,51 +0,0 @@
#jinja2: lstrip_blocks: True
[Unit]
Description=Matrix Mx Puppet Twitter bridge
{% for service in matrix_mx_puppet_twitter_systemd_required_services_list %}
Requires={{ service }}
After={{ service }}
{% endfor %}
{% for service in matrix_mx_puppet_twitter_systemd_wanted_services_list %}
Wants={{ service }}
{% endfor %}
DefaultDependencies=no

[Service]
Type=simple
Environment="HOME={{ devture_systemd_docker_base_systemd_unit_home_path }}"
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-twitter 2>/dev/null || true'
ExecStartPre=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-twitter 2>/dev/null || true'

ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
--rm \
--name=matrix-mx-puppet-twitter \
--log-driver=none \
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
--cap-drop=ALL \
--network={{ matrix_mx_puppet_twitter_container_network }} \
{% if matrix_mx_puppet_twitter_container_http_host_bind_port %}
-p {{ matrix_mx_puppet_twitter_container_http_host_bind_port }}:{{ matrix_mx_puppet_twitter_appservice_port }} \
{% endif %}
-e CONFIG_PATH=/config/config.yaml \
-e REGISTRATION_PATH=/config/registration.yaml \
--mount type=bind,src={{ matrix_mx_puppet_twitter_config_path }},dst=/config \
--mount type=bind,src={{ matrix_mx_puppet_twitter_data_path }},dst=/data \
{% for arg in matrix_mx_puppet_twitter_container_extra_arguments %}
{{ arg }} \
{% endfor %}
{{ matrix_mx_puppet_twitter_docker_image }}

{% for network in matrix_mx_puppet_twitter_container_additional_networks %}
ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-mx-puppet-twitter
{% endfor %}

ExecStart={{ devture_systemd_docker_base_host_command_docker }} start --attach matrix-mx-puppet-twitter

ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} stop -t {{ devture_systemd_docker_base_container_stop_grace_time_seconds }} matrix-mx-puppet-twitter 2>/dev/null || true'
ExecStop=-{{ devture_systemd_docker_base_host_command_sh }} -c '{{ devture_systemd_docker_base_host_command_docker }} rm matrix-mx-puppet-twitter 2>/dev/null || true'
Restart=always
RestartSec=30
SyslogIdentifier=matrix-mx-puppet-twitter

[Install]
WantedBy=multi-user.target

+ 0
- 5
roles/custom/matrix-bridge-mx-puppet-twitter/templates/systemd/matrix-mx-puppet-twitter.service.j2.license Zobrazit soubor

@@ -1,5 +0,0 @@
SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
SPDX-FileCopyrightText: 2020 Scott Crossen
SPDX-FileCopyrightText: 2020 Tulir Asokan

SPDX-License-Identifier: AGPL-3.0-or-later

+ 1
- 1
roles/custom/matrix-client-cinny/defaults/main.yml Zobrazit soubor

@@ -17,7 +17,7 @@ matrix_client_cinny_container_image_self_build: false
matrix_client_cinny_container_image_self_build_repo: "https://github.com/ajbura/cinny.git"

# renovate: datasource=docker depName=ajbura/cinny
matrix_client_cinny_version: v4.10.1
matrix_client_cinny_version: v4.10.2
matrix_client_cinny_docker_image: "{{ matrix_client_cinny_docker_image_registry_prefix }}ajbura/cinny:{{ matrix_client_cinny_version }}"
matrix_client_cinny_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_cinny_container_image_self_build else matrix_client_cinny_docker_image_registry_prefix_upstream }}"
matrix_client_cinny_docker_image_registry_prefix_upstream: "{{ matrix_client_cinny_docker_image_registry_prefix_upstream_default }}"


+ 1
- 1
roles/custom/matrix-client-element/defaults/main.yml Zobrazit soubor

@@ -29,7 +29,7 @@ matrix_client_element_container_image_self_build_repo: "https://github.com/eleme
matrix_client_element_container_image_self_build_low_memory_system_patch_enabled: "{{ ansible_memtotal_mb < 4096 }}"

# renovate: datasource=docker depName=ghcr.io/element-hq/element-web
matrix_client_element_version: v1.12.2
matrix_client_element_version: v1.12.3

matrix_client_element_docker_image: "{{ matrix_client_element_docker_image_registry_prefix }}element-hq/element-web:{{ matrix_client_element_version }}"
matrix_client_element_docker_image_registry_prefix: "{{ 'localhost/' if matrix_client_element_container_image_self_build else matrix_client_element_docker_image_registry_prefix_upstream }}"


+ 60
- 0
roles/custom/matrix_playbook_migration/tasks/validate_config.yml Zobrazit soubor

@@ -547,6 +547,54 @@
The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_mautrix_hangouts_.+', wantlist=True) | join(', ') }}
when: "lookup('ansible.builtin.varnames', '^matrix_mautrix_hangouts_.+', wantlist=True) | length > 0"

- name: (Deprecation) Catch and report mx-puppet-discord variables
ansible.builtin.fail:
msg: |-
The MX Puppet Discord bridge was completely removed from the playbook in November 2025.

Please remove all `matrix_mx_puppet_discord_*` variables from your configuration file (vars.yml).

You may also wish to uninstall the bridge manually. See `docs/configuring-playbook-bridge-mx-puppet-discord.md` for more information.

The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_mx_puppet_discord_.+', wantlist=True) | join(', ') }}
when: "lookup('ansible.builtin.varnames', '^matrix_mx_puppet_discord_.+', wantlist=True) | length > 0"

- name: (Deprecation) Catch and report mx-puppet-instagram variables
ansible.builtin.fail:
msg: |-
The MX Puppet Instagram bridge was completely removed from the playbook in November 2025.

Please remove all `matrix_mx_puppet_instagram_*` variables from your configuration file (vars.yml).

You may also wish to uninstall the bridge manually. See `docs/configuring-playbook-bridge-mx-puppet-instagram.md` for more information.

The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_mx_puppet_instagram_.+', wantlist=True) | join(', ') }}
when: "lookup('ansible.builtin.varnames', '^matrix_mx_puppet_instagram_.+', wantlist=True) | length > 0"

- name: (Deprecation) Catch and report mx-puppet-slack variables
ansible.builtin.fail:
msg: |-
The MX Puppet Slack bridge was completely removed from the playbook in November 2025.

Please remove all `matrix_mx_puppet_slack_*` variables from your configuration file (vars.yml).

You may also wish to uninstall the bridge manually. See `docs/configuring-playbook-bridge-mx-puppet-slack.md` for more information.

The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_mx_puppet_slack_.+', wantlist=True) | join(', ') }}
when: "lookup('ansible.builtin.varnames', '^matrix_mx_puppet_slack_.+', wantlist=True) | length > 0"

- name: (Deprecation) Catch and report mx-puppet-twitter variables
ansible.builtin.fail:
msg: |-
The MX Puppet Twitter bridge was completely removed from the playbook in November 2025.

Please remove all `matrix_mx_puppet_twitter_*` variables from your configuration file (vars.yml).

You may also wish to uninstall the bridge manually. See `docs/configuring-playbook-bridge-mx-puppet-twitter.md` for more information.

The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_mx_puppet_twitter_.+', wantlist=True) | join(', ') }}
when: "lookup('ansible.builtin.varnames', '^matrix_mx_puppet_twitter_.+', wantlist=True) | length > 0"

- name: (Deprecation) Catch and report Email2Matrix variables
ansible.builtin.fail:
msg: |-
@@ -558,3 +606,15 @@

The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_email2matrix_.+', wantlist=True) | join(', ') }}
when: "lookup('ansible.builtin.varnames', '^matrix_email2matrix_.+', wantlist=True) | length > 0"

- name: (Deprecation) Catch and report go-skype-bridge variables
ansible.builtin.fail:
msg: |-
The go-skype-bridge was completely removed from the playbook in November 2025, as Skype has been discontinued since May 2025.

Please remove all `matrix_go_skype_bridge_*` variables from your configuration file (vars.yml).

You may also wish to uninstall the bridge manually. See `docs/configuring-playbook-bridge-go-skype-bridge.md` for more information.

The following variables in your configuration need to be removed: {{ lookup('ansible.builtin.varnames', '^matrix_go_skype_bridge_.+', wantlist=True) | join(', ') }}
when: "lookup('ansible.builtin.varnames', '^matrix_go_skype_bridge_.+', wantlist=True) | length > 0"

+ 0
- 5
setup.yml Zobrazit soubor

@@ -60,7 +60,6 @@
- custom/matrix-bridge-appservice-irc
- custom/matrix-bridge-appservice-kakaotalk
- custom/matrix-bridge-beeper-linkedin
- custom/matrix-bridge-go-skype-bridge
- custom/matrix-bridge-wechat
- custom/matrix-bridge-mautrix-facebook
- custom/matrix-bridge-mautrix-twitter
@@ -76,12 +75,8 @@
- custom/matrix-bridge-mautrix-discord
- custom/matrix-bridge-mautrix-slack
- custom/matrix-bridge-mautrix-bluesky
- custom/matrix-bridge-mx-puppet-discord
- custom/matrix-bridge-mx-puppet-groupme
- custom/matrix-bridge-mx-puppet-steam
- custom/matrix-bridge-mx-puppet-slack
- custom/matrix-bridge-mx-puppet-twitter
- custom/matrix-bridge-mx-puppet-instagram
- custom/matrix-bridge-postmoogle
- custom/matrix-bridge-sms
- custom/matrix-bridge-steam


Načítá se…
Zrušit
Uložit