-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[#3031] Update mautrix-signal to the go version (signalgo merged to signal) #3041
Merged
spantaleev
merged 29 commits into
spantaleev:master
from
Braindot-fr:3031-feat-add-signalgo-bridge
Jan 2, 2024
Merged
Changes from 7 commits
Commits
Show all changes
29 commits
Select commit
Hold shift + click to select a range
69a7847
feat: add files for signalgo installation
pm-McFly 0f7b895
feat: enroll signalgo to nginx proxy
pm-McFly 7a83c20
fix: escape jinja '.'
pm-McFly a42aacb
fix: remove unsued signalgo-daemon.service
pm-McFly 078d1ea
doc: add signalgo docs for config
pm-McFly 1732864
fix: signalgo starts properly
pm-McFly e3fdd6b
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly 3dc4923
fix: signalgo puppet-ed user regex
pm-McFly c49cf35
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly 44068b4
doc: marks Mautrix-Signal (Deprecated)
pm-McFly c028d75
fix: sqlite backend is sqlite3-fk-wal
pm-McFly 0e4c878
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly 2f6525c
refactor: remove signalgo and update signal to 'after merge'
pm-McFly c9a1d79
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly c93b642
doc: check typo
pm-McFly b426a68
chore: update mautrix-signal for legacy compat.
pm-McFly 81e015d
feat: auto removal of signal-daemon service
pm-McFly 7163b9d
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly a8e14ac
fix: ansible yaml syntax
pm-McFly 1894f84
chore: update bridge docker tag
pm-McFly 055406b
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly 811c6b1
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly db46933
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly 91e39a5
feat: relay mode in signal
pm-McFly c873516
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly cd94111
fix: signal docker tag follow system arch
pm-McFly e5d31b5
chore: update signal bridge version
pm-McFly 6d4d1bf
Merge branch 'spantaleev:master' into 3031-feat-add-signalgo-bridge
pm-McFly 4db1e59
chore: update signal bridge
pm-McFly File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
# Setting up Mautrix Signalgo (optional) | ||
|
||
The playbook can install and configure [mautrix-signalgo](https://github.com/mautrix/signalgo) for you. | ||
|
||
See the project's [documentation](https://docs.mau.fi/bridges/python/signalgo/index.html) to learn what it does and why it might be useful to you. | ||
|
||
**Note/Prerequisite**: If you're running with the Postgres database server integrated by the playbook (which is the default), you don't need to do anything special and can easily proceed with installing. However, if you're [using an external Postgres server](configuring-playbook-external-postgres.md), you'd need to manually prepare a Postgres database for this bridge and adjust the variables related to that (`matrix_mautrix_signalgo_database_*`). | ||
|
||
**Note**: This revamped version of the [mautrix-signal (legacy)](configuring-playbook-bridge-mautrix-signal.md) may increase the CPU usage of your homeserver. | ||
|
||
Use the following playbook configuration: | ||
|
||
```yaml | ||
matrix_mautrix_signalgo_enabled: true | ||
``` | ||
|
||
There are some additional things you may wish to configure about the bridge before you continue. | ||
|
||
By default, any user on your homeserver will be able to use the bridge. | ||
|
||
Different levels of permission can be granted to users: | ||
|
||
* relay - Allowed to be relayed through the bridge, no access to commands; | ||
* user - Use the bridge with puppeting; | ||
* admin - Use and administer the bridge. | ||
|
||
The permissions are following the sequence: nothing < relay < user < admin. | ||
|
||
The default permissions are set as follows: | ||
```yaml | ||
permissions: | ||
'*': relay | ||
YOUR_DOMAIN: user | ||
``` | ||
|
||
If you want to augment the preset permissions, you might want to set the additional permissions with the following settings in your `vars.yml` file: | ||
```yaml | ||
matrix_mautrix_signalgo_configuration_extension_yaml: | | ||
bridge: | ||
permissions: | ||
'@YOUR_USERNAME:YOUR_DOMAIN': admin | ||
``` | ||
|
||
This will add the admin permission to the specific user, while keeping the default permissions. | ||
|
||
In case you want to replace the default permissions settings **completely**, populate the following item within your `vars.yml` file: | ||
```yaml | ||
matrix_mautrix_signalgo_bridge_permissions: | | ||
'@ADMIN:YOUR_DOMAIN': admin | ||
'@USER:YOUR_DOMAIN' : user | ||
``` | ||
|
||
You may wish to look at `roles/custom/matrix-bridge-mautrix-signalgo/templates/config.yaml.j2` to find more information on the permissions settings and other options you would like to configure. | ||
|
||
## Set up Double Puppeting | ||
|
||
If you'd like to use [Double Puppeting](https://docs.mau.fi/bridges/general/double-puppeting.html) (hint: you most likely do), you have 2 ways of going about it. | ||
|
||
### Method 1: automatically, by enabling Shared Secret Auth | ||
|
||
The bridge will automatically perform Double Puppeting if you enable [Shared Secret Auth](configuring-playbook-shared-secret-auth.md) for this playbook. | ||
|
||
This is the recommended way of setting up Double Puppeting, as it's easier to accomplish, works for all your users automatically, and has less of a chance of breaking in the future. | ||
|
||
### Method 2: manually, by asking each user to provide a working access token | ||
|
||
**Note**: This method for enabling Double Puppeting can be configured only after you've already set up bridging (see [Usage](#usage)). | ||
|
||
When using this method, **each user** that wishes to enable Double Puppeting needs to follow the following steps: | ||
|
||
- retrieve a Matrix access token for yourself. Refer to the documentation on [how to do that](obtaining-access-tokens.md). | ||
|
||
- send the access token to the bot. Example: `login-matrix MATRIX_ACCESS_TOKEN_HERE` | ||
|
||
- make sure you don't log out the `Mautrix-Signalgo` device some time in the future, as that would break the Double Puppeting feature | ||
|
||
|
||
## Usage | ||
|
||
You then need to start a chat with `@signalgobot:YOUR_DOMAIN` (where `YOUR_DOMAIN` is your base domain, not the `matrix.` domain). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
159 changes: 159 additions & 0 deletions
159
roles/custom/matrix-bridge-mautrix-signalgo/defaults/main.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
--- | ||
# mautrix-signalgo is a Matrix <-> signalgo bridge | ||
# Project source code URL: https://github.com/mautrix/signalgo | ||
|
||
matrix_mautrix_signalgo_enabled: true | ||
pm-McFly marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
matrix_mautrix_signalgo_container_image_self_build: false | ||
matrix_mautrix_signalgo_container_image_self_build_repo: "https://mau.dev/mautrix/signalgo.git" | ||
matrix_mautrix_signalgo_container_image_self_build_branch: "{{ 'main' if matrix_mautrix_signalgo_version == 'latest' else matrix_mautrix_signalgo_version }}" | ||
|
||
# renovate: datasource=docker depName=dock.mau.dev/mautrix/signalgo | ||
matrix_mautrix_signalgo_version: 3953789ef00f5f521a26b4463aaee95aa8a929b9-amd64 | ||
|
||
# See: https://mau.dev/mautrix/signalgo/container_registry | ||
matrix_mautrix_signalgo_docker_image: "{{ matrix_mautrix_signalgo_docker_image_name_prefix }}mautrix/signalgo:{{ matrix_mautrix_signalgo_version }}" | ||
matrix_mautrix_signalgo_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_signalgo_container_image_self_build else 'dock.mau.dev/' }}" | ||
matrix_mautrix_signalgo_docker_image_force_pull: "{{ matrix_mautrix_signalgo_docker_image.endswith(':latest') }}" | ||
|
||
matrix_mautrix_signalgo_base_path: "{{ matrix_base_data_path }}/mautrix-signalgo" | ||
matrix_mautrix_signalgo_config_path: "{{ matrix_mautrix_signalgo_base_path }}/config" | ||
matrix_mautrix_signalgo_data_path: "{{ matrix_mautrix_signalgo_base_path }}/data" | ||
matrix_mautrix_signalgo_docker_src_files_path: "{{ matrix_mautrix_signalgo_base_path }}/docker-src" | ||
|
||
matrix_mautrix_signalgo_homeserver_address: "{{ matrix_homeserver_container_url }}" | ||
matrix_mautrix_signalgo_homeserver_domain: "{{ matrix_domain }}" | ||
matrix_mautrix_signalgo_appservice_address: "http://matrix-mautrix-signalgo:8080" | ||
|
||
matrix_mautrix_signalgo_command_prefix: "!signalgo" | ||
|
||
matrix_mautrix_signalgo_bridge_permissions: | | ||
{{ | ||
{'*': 'relay', matrix_mautrix_signalgo_homeserver_domain: 'user'} | ||
| combine({matrix_admin: 'admin'} if matrix_admin else {}) | ||
}} | ||
|
||
# A list of extra arguments to pass to the container | ||
matrix_mautrix_signalgo_container_extra_arguments: [] | ||
|
||
# List of systemd services that matrix-mautrix-signalgo.service depends on. | ||
matrix_mautrix_signalgo_systemd_required_services_list: ['docker.service'] | ||
|
||
# List of systemd services that matrix-mautrix-signalgo.service wants | ||
matrix_mautrix_signalgo_systemd_wanted_services_list: [] | ||
|
||
matrix_mautrix_signalgo_appservice_token: '' | ||
matrix_mautrix_signalgo_homeserver_token: '' | ||
|
||
matrix_mautrix_signalgo_appservice_bot_username: signalgobot | ||
|
||
# Minimum severity of journal log messages. | ||
# Options: debug, info, warn, error, fatal | ||
matrix_mautrix_signalgo_logging_level: 'warn' | ||
|
||
# Whether or not created rooms should have federation enabled. | ||
# If false, created portal rooms will never be federated. | ||
matrix_mautrix_signalgo_federate_rooms: true | ||
|
||
# Whether or not metrics endpoint should be enabled. | ||
# Enabling them is usually enough for a local (in-container) Prometheus to consume them. | ||
# If metrics need to be consumed by another (external) Prometheus server, consider exposing them via `matrix_mautrix_signal_metrics_proxying_enabled`. | ||
matrix_mautrix_signalgo_metrics_enabled: false | ||
|
||
# Controls whether metrics should be proxied (exposed) on `matrix.DOMAIN/metrics/mautrix-signal`. | ||
# This will only work take effect if `matrix_nginx_proxy_proxy_matrix_metrics_enabled: true`. | ||
# See the `matrix-nginx-proxy` role for details about enabling `matrix_nginx_proxy_proxy_matrix_metrics_enabled`. | ||
matrix_mautrix_signalgo_metrics_proxying_enabled: false | ||
|
||
# Database-related configuration fields. | ||
# | ||
# To use SQLite, stick to these defaults. | ||
# | ||
# To use Postgres: | ||
# - change the engine (`matrix_mautrix_signalgo_database_engine: 'postgres'`) | ||
# - adjust your database credentials via the `matrix_mautrix_signalgo_database_*` variables | ||
matrix_mautrix_signalgo_database_engine: 'sqlite' | ||
|
||
matrix_mautrix_signalgo_sqlite_database_path_local: "{{ matrix_mautrix_signalgo_data_path }}/mautrix-signalgo.db" | ||
matrix_mautrix_signalgo_sqlite_database_path_in_container: "/data/mautrix-signalgo.db" | ||
|
||
matrix_mautrix_signalgo_database_username: 'matrix_mautrix_signalgo' | ||
matrix_mautrix_signalgo_database_password: 'some-password' | ||
matrix_mautrix_signalgo_database_hostname: '' | ||
matrix_mautrix_signalgo_database_port: 5432 | ||
matrix_mautrix_signalgo_database_name: 'matrix_mautrix_signalgo' | ||
matrix_mautrix_signalgo_database_sslmode: disable | ||
|
||
matrix_mautrix_signalgo_database_connection_string: 'postgresql://{{ matrix_mautrix_signalgo_database_username }}:{{ matrix_mautrix_signalgo_database_password }}@{{ matrix_mautrix_signalgo_database_hostname }}:{{ matrix_mautrix_signalgo_database_port }}/{{ matrix_mautrix_signalgo_database_name }}?sslmode={{ matrix_mautrix_signalgo_database_sslmode }}' | ||
|
||
matrix_mautrix_signalgo_appservice_database_type: "{{ | ||
{ | ||
'sqlite': 'sqlite3', | ||
'postgres':'postgres', | ||
}[matrix_mautrix_signalgo_database_engine] | ||
}}" | ||
|
||
matrix_mautrix_signalgo_appservice_database_uri: "{{ | ||
{ | ||
'sqlite': matrix_mautrix_signalgo_sqlite_database_path_in_container, | ||
'postgres': matrix_mautrix_signalgo_database_connection_string, | ||
}[matrix_mautrix_signalgo_database_engine] | ||
}}" | ||
|
||
# Can be set to enable automatic double-puppeting via Shared Secret Auth (https://github.com/devture/matrix-synapse-shared-secret-auth). | ||
matrix_mautrix_signalgo_login_shared_secret: '' | ||
matrix_mautrix_signalgo_bridge_login_shared_secret_map: | ||
"{{ {matrix_mautrix_signalgo_homeserver_domain: matrix_mautrix_signalgo_login_shared_secret} if matrix_mautrix_signalgo_login_shared_secret else {} }}" | ||
|
||
# Servers to always allow double puppeting from | ||
matrix_mautrix_signalgo_bridge_double_puppet_server_map: | ||
"{{ matrix_mautrix_signalgo_homeserver_domain : matrix_mautrix_signalgo_homeserver_address }}" | ||
|
||
# Default mautrix-signalgo 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_mautrix_signalgo_configuration_extension_yaml`) | ||
# or completely replace this variable with your own template. | ||
matrix_mautrix_signalgo_configuration_yaml: "{{ lookup('template', 'templates/config.yaml.j2') }}" | ||
|
||
matrix_mautrix_signalgo_configuration_extension_yaml: | | ||
# Your custom YAML configuration goes here. | ||
# This configuration extends the default starting configuration (`matrix_mautrix_signalgo_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_mautrix_signalgo_configuration_yaml`. | ||
|
||
matrix_mautrix_signalgo_configuration_extension: "{{ matrix_mautrix_signalgo_configuration_extension_yaml | from_yaml if matrix_mautrix_signalgo_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_mautrix_signalgo_configuration_yaml`. | ||
matrix_mautrix_signalgo_configuration: "{{ matrix_mautrix_signalgo_configuration_yaml | from_yaml | combine(matrix_mautrix_signalgo_configuration_extension, recursive=True) }}" | ||
|
||
matrix_mautrix_signalgo_registration_yaml: | | ||
id: signalgo | ||
url: {{ matrix_mautrix_signalgo_appservice_address }} | ||
as_token: "{{ matrix_mautrix_signalgo_appservice_token }}" | ||
hs_token: "{{ matrix_mautrix_signalgo_homeserver_token }}" | ||
# See https://github.com/mautrix/signal/issues/43 | ||
sender_localpart: _bot_{{ matrix_mautrix_signalgo_appservice_bot_username }} | ||
rate_limited: false | ||
namespaces: | ||
users: | ||
- regex: '^@signalgo_[0-9]+:{{ matrix_mautrix_signalgo_homeserver_domain | regex_escape }}$' | ||
pm-McFly marked this conversation as resolved.
Show resolved
Hide resolved
|
||
exclusive: true | ||
- exclusive: true | ||
regex: '^@{{ matrix_mautrix_signalgo_appservice_bot_username | regex_escape }}:{{ matrix_mautrix_signalgo_homeserver_domain | regex_escape }}$' | ||
de.sorunome.msc2409.push_ephemeral: true | ||
|
||
matrix_mautrix_signalgo_registration: "{{ matrix_mautrix_signalgo_registration_yaml | from_yaml }}" | ||
|
||
# Enable End-to-bridge encryption | ||
matrix_mautrix_signalgo_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" | ||
matrix_mautrix_signalgo_bridge_encryption_default: "{{ matrix_mautrix_signalgo_bridge_encryption_allow }}" | ||
matrix_mautrix_signalgo_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_signalgo_bridge_encryption_allow }}" | ||
|
||
# On conduit versions before 0.5.0 this option prevented users from joining spaces created by the bridge. | ||
# Setting this to false fixed the issue. | ||
matrix_mautrix_signalgo_bridge_restricted_rooms: true |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's true that it maybe lacks of some details that could be added to the documentation for example, but in fact I have tested to switch from the managed pgsql to sqlite or external pgsql and it works - as few as it is documented by your link.
As this is also missing for the other bridges, maybe this should be the concern of dedicated issue?
-- Documenting / Refactoring-Unifying the bridges db settings