diff --git a/README.md b/README.md index 47b4074c4..045a7b1a6 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ The homeserver is the backbone of your Matrix system. Choose one from the follow | [Synapse](https://github.com/element-hq/synapse) | ✅ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network | [Link](docs/configuring-playbook-synapse.md) | | [Conduit](https://conduit.rs) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements | [Link](docs/configuring-playbook-conduit.md) | | [conduwuit](https://conduwuit.puppyirl.gay/) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit. | [Link](docs/configuring-playbook-conduwuit.md) | +| [continuwuity](https://continuwuity.org) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. continuwuity is a continuation of conduwuit. | [Link](docs/configuring-playbook-continuwuity.md) | | [Dendrite](https://github.com/element-hq/dendrite) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Dendrite is a second-generation Matrix homeserver written in Go, an alternative to Synapse. | [Link](docs/configuring-playbook-dendrite.md) | ### Clients diff --git a/docs/configuring-playbook-continuwuity.md b/docs/configuring-playbook-continuwuity.md new file mode 100644 index 000000000..62de241f3 --- /dev/null +++ b/docs/configuring-playbook-continuwuity.md @@ -0,0 +1,104 @@ + + +# Configuring continuwuity (optional) + +The playbook can install and configure the [continuwuity](https://continuwuity.org) Matrix server for you. + +See the project's [documentation](https://continuwuity.org) to learn what it does and why it might be useful to you. + +By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document. + +💡 **Note**: continuwuity is a fork of [conduwuit](./configuring-playbook-conduwuit.md), which the playbook also supports. + +> [!WARNING] +> - **You can't switch an existing Matrix server's implementation** (e.g. Synapse -> continuwuity). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet. +> - **Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding + +## Adjusting the playbook configuration + +To use continuwuity, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below: + +```yaml +matrix_homeserver_implementation: continuwuity + +# Registering users can only happen via the API, +# so it makes sense to enable it, at least initially. +matrix_continuwuity_config_allow_registration: true + +# Generate a strong registration token to protect the registration endpoint from abuse. +# You can create one with a command like `pwgen -s 64 1`. +matrix_continuwuity_config_registration_token: '' +``` + +### Extending the configuration + +There are some additional things you may wish to configure about the server. + +Take a look at: + +- `roles/custom/matrix-continuwuity/defaults/main.yml` for some variables that you can customize via your `vars.yml` file +- `roles/custom/matrix-continuwuity/templates/continuwuity.toml.j2` for the server's default configuration + +There are various Ansible variables that control settings in the `continuwuity.toml` file. + +If a specific setting you'd like to change does not have a dedicated Ansible variable, you can either submit a PR to us to add it, or you can [override the setting using an environment variable](https://continuwuity.org/configuration#environment-variables) using `matrix_continuwuity_environment_variables_extension`. For example: + +```yaml +matrix_continuwuity_environment_variables_extension: | + continuwuity_MAX_REQUEST_SIZE=50000000 + continuwuity_REQUEST_TIMEOUT=60 +``` + +## Creating the first user account + +Unlike other homeserver implementations (like Synapse and Dendrite), continuwuity does not support creating users via the command line or via the playbook. + +If you followed the instructions above (see [Adjusting the playbook configuration](#adjusting-the-playbook-configuration)), you should have registration enabled and protected by a registration token. + +This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users. + +The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**. + + +## Configuring bridges / appservices + +For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver. + +For continuwuity, you will have to manually register appservices using the [`!admin appservices register` command](https://continuwuity.org/appservices.html#set-up-the-appservice---general-instructions) sent to the server bot account. + +The server's bot account has a Matrix ID of `@conduit:example.com` (not `@continuwuity:example.com`!) due to continuwuity's historical legacy. +Your first user account would already have been invited to an admin room with this bot. + +Find the appservice file you'd like to register. This can be any `registration.yaml` file found in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`. + +Then, send its content to the existing admin room: + + !admin appservices register + + ``` + as_token: + de.sorunome.msc2409.push_ephemeral: true + hs_token: + id: signal + namespaces: + aliases: + - exclusive: true + regex: ^#signal_.+:example\.org$ + users: + - exclusive: true + regex: ^@signal_.+:example\.org$ + - exclusive: true + regex: ^@signalbot:example\.org$ + rate_limited: false + sender_localpart: _bot_signalbot + url: http://matrix-mautrix-signal:29328 + ``` + +## 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-continuwuity`. diff --git a/docs/configuring-playbook.md b/docs/configuring-playbook.md index 58cea52b9..34c8d698e 100644 --- a/docs/configuring-playbook.md +++ b/docs/configuring-playbook.md @@ -53,6 +53,8 @@ For a more custom setup, see the [Other configuration options](#other-configurat - [Configuring conduwuit](configuring-playbook-conduwuit.md), if you've switched to the [conduwuit](https://conduwuit.puppyirl.gay/) homeserver implementation + - [Configuring continuwuity](configuring-playbook-continuwuity.md), if you've switched to the [continuwuity](https://continuwuity.org) homeserver implementation + - [Configuring Dendrite](configuring-playbook-dendrite.md), if you've switched to the [Dendrite](https://matrix-org.github.io/dendrite) homeserver implementation - Server components: diff --git a/docs/container-images.md b/docs/container-images.md index b445cc001..953c39d5c 100644 --- a/docs/container-images.md +++ b/docs/container-images.md @@ -28,6 +28,7 @@ We try to stick to official images (provided by their respective projects) as mu | [Synapse](configuring-playbook-synapse.md) | [element-hq/synapse](https://ghcr.io/element-hq/synapse) | ✅ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network | | [Conduit](configuring-playbook-conduit.md) | [matrixconduit/matrix-conduit](https://hub.docker.com/r/matrixconduit/matrix-conduit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Conduit is a lightweight open-source server implementation of the Matrix Specification with a focus on easy setup and low system requirements | | [conduwuit](configuring-playbook-conduwuit.md) | [girlbossceo/conduwuit](https://ghcr.io/girlbossceo/conduwuit) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. conduwuit is a fork of Conduit. | +| [continuwuity](configuring-playbook-continuwuity.md) | [continuwuation/continuwuity](https://forgejo.ellis.link/continuwuation/continuwuity) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. continuwuity is a continuation of conduwuit. | | [Dendrite](configuring-playbook-dendrite.md) | [matrixdotorg/dendrite-monolith](https://hub.docker.com/r/matrixdotorg/dendrite-monolith/) | ❌ | Storing your data and managing your presence in the [Matrix](http://matrix.org/) network. Dendrite is a second-generation Matrix homeserver written in Go, an alternative to Synapse. | ## Clients diff --git a/docs/howto-srv-server-delegation.md b/docs/howto-srv-server-delegation.md index dda92b9a3..9d03588c7 100644 --- a/docs/howto-srv-server-delegation.md +++ b/docs/howto-srv-server-delegation.md @@ -26,7 +26,7 @@ The up-to-date list can be accessed on [traefik's documentation](https://doc.tra **Note**: the changes below instruct you how to do this for a basic Synapse installation. You will need to adapt the variable name and the content of the labels: -- if you're using another homeserver implementation (e.g. [Conduit](./configuring-playbook-conduit.md), [conduwuit](./configuring-playbook-conduwuit.md) or [Dendrite](./configuring-playbook-dendrite.md)) +- if you're using another homeserver implementation (e.g. [Conduit](./configuring-playbook-conduit.md), [conduwuit](./configuring-playbook-conduwuit.md), [continuwuity](./configuring-playbook-continuwuity.md) or [Dendrite](./configuring-playbook-dendrite.md)) - if you're using [Synapse with workers enabled](./configuring-playbook-synapse.md#load-balancing-with-workers) (`matrix_synapse_workers_enabled: true`). In that case, it's actually the `matrix-synapse-reverse-proxy-companion` service which has Traefik labels attached Also, all instructions below are from an older version of the playbook and may not work anymore. diff --git a/group_vars/matrix_servers b/group_vars/matrix_servers index 9ed1ced91..45d2a81a4 100755 --- a/group_vars/matrix_servers +++ b/group_vars/matrix_servers @@ -243,7 +243,7 @@ matrix_addons_homeserver_client_api_url: "{{ ('http://' + matrix_playbook_revers matrix_addons_homeserver_systemd_services_list: "{{ ([traefik_identifier + '.service'] if matrix_playbook_reverse_proxy_type == 'playbook-managed-traefik' else []) if matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled else matrix_homeserver_systemd_services_list }}" # Starting from version `0.6.0` Conduit natively supports some sync v3 (sliding-sync) features. -matrix_homeserver_sliding_sync_url: "{{ matrix_sliding_sync_base_url if matrix_sliding_sync_enabled else (matrix_homeserver_url if matrix_homeserver_implementation in ['conduit', 'conduwuit'] else '') }}" +matrix_homeserver_sliding_sync_url: "{{ matrix_sliding_sync_base_url if matrix_sliding_sync_enabled else (matrix_homeserver_url if matrix_homeserver_implementation in ['conduit', 'conduwuit', 'continuwuity'] else '') }}" ######################################################################## # # @@ -567,6 +567,7 @@ matrix_homeserver_container_client_api_endpoint: |- 'dendrite': ('matrix-dendrite:' + matrix_dendrite_http_bind_port | default('8008') | string), 'conduit': ('matrix-conduit:' + matrix_conduit_port_number | default('8008') | string), 'conduwuit': ('matrix-conduwuit:' + matrix_conduwuit_config_port_number | default('8008') | string), + 'continuwuity': ('matrix-continuwuity:' + matrix_continuwuity_config_port_number | default('8008') | string), }[matrix_homeserver_implementation] }} @@ -577,6 +578,7 @@ matrix_homeserver_container_federation_api_endpoint: |- 'dendrite': ('matrix-dendrite:' + matrix_dendrite_http_bind_port | default('8008') | string), 'conduit': ('matrix-conduit:' + matrix_conduit_port_number | default('8008') | string), 'conduwuit': ('matrix-conduwuit:' + matrix_conduwuit_config_port_number | default('8008') | string), + 'continuwuity': ('matrix-continuwuity:' + matrix_continuwuity_config_port_number | default('8008') | string), }[matrix_homeserver_implementation] }} @@ -5640,6 +5642,7 @@ grafana_default_home_dashboard_path: |- 'dendrite': ('/etc/grafana/dashboards/node-exporter-full.json' if prometheus_node_exporter_enabled else ''), 'conduit': ('/etc/grafana/dashboards/node-exporter-full.json' if prometheus_node_exporter_enabled else ''), 'conduwuit': ('/etc/grafana/dashboards/node-exporter-full.json' if prometheus_node_exporter_enabled else ''), + 'continuwuity': ('/etc/grafana/dashboards/node-exporter-full.json' if prometheus_node_exporter_enabled else ''), }[matrix_homeserver_implementation] }} @@ -5700,6 +5703,7 @@ matrix_registration_shared_secret: |- 'dendrite': matrix_dendrite_client_api_registration_shared_secret | default (''), 'conduit': '', 'conduwuit': '', + 'continuwuity': '', }[matrix_homeserver_implementation] }} @@ -5977,6 +5981,58 @@ matrix_conduwuit_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabl ###################################################################### +###################################################################### +# +# matrix-continuwuity +# +###################################################################### + +matrix_continuwuity_enabled: "{{ matrix_homeserver_implementation == 'continuwuity' }}" + +matrix_continuwuity_hostname: "{{ matrix_server_fqn_matrix }}" + +matrix_continuwuity_config_allow_federation: "{{ matrix_homeserver_federation_enabled }}" + +matrix_continuwuity_docker_image_registry_prefix_upstream: "{{ matrix_container_global_registry_prefix_override if matrix_container_global_registry_prefix_override else matrix_continuwuity_docker_image_registry_prefix_upstream_default }}" + +matrix_continuwuity_container_network: "{{ matrix_homeserver_container_network }}" + +matrix_continuwuity_container_additional_networks_auto: | + {{ + ( + ([matrix_playbook_reverse_proxyable_services_additional_network] if matrix_continuwuity_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network else []) + ) | unique + }} + +matrix_continuwuity_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] and not matrix_synapse_workers_enabled }}" +matrix_continuwuity_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +matrix_continuwuity_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" +matrix_continuwuity_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" + +matrix_continuwuity_container_labels_public_client_root_redirection_enabled: "{{ matrix_continuwuity_container_labels_public_client_root_redirection_url != '' }}" +matrix_continuwuity_container_labels_public_client_root_redirection_url: "{{ (('https://' if matrix_playbook_ssl_enabled else 'http://') + matrix_server_fqn_element) if matrix_client_element_enabled else '' }}" + +matrix_continuwuity_container_labels_public_federation_api_traefik_hostname: "{{ matrix_server_fqn_matrix_federation }}" +matrix_continuwuity_container_labels_public_federation_api_traefik_entrypoints: "{{ matrix_federation_traefik_entrypoint_name }}" +matrix_continuwuity_container_labels_public_federation_api_traefik_tls: "{{ matrix_federation_traefik_entrypoint_tls }}" + +matrix_continuwuity_container_labels_internal_client_api_enabled: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_enabled }}" +matrix_continuwuity_container_labels_internal_client_api_traefik_entrypoints: "{{ matrix_playbook_internal_matrix_client_api_traefik_entrypoint_name }}" + +matrix_continuwuity_config_turn_uris: "{{ matrix_coturn_turn_uris if matrix_coturn_enabled else [] }}" +matrix_continuwuity_config_turn_secret: "{{ matrix_coturn_turn_static_auth_secret if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'auth-secret') else '' }}" +matrix_continuwuity_config_turn_username: "{{ matrix_coturn_lt_cred_mech_username if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" +matrix_continuwuity_config_turn_password: "{{ matrix_coturn_lt_cred_mech_password if (matrix_coturn_enabled and matrix_coturn_authentication_method == 'lt-cred-mech') else '' }}" + +matrix_continuwuity_self_check_validate_certificates: "{{ matrix_playbook_ssl_enabled }}" + +###################################################################### +# +# /matrix-continuwuity +# +###################################################################### + + ###################################################################### # # matrix-user-creator diff --git a/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-continuwuity.po b/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-continuwuity.po new file mode 100644 index 000000000..8e5129018 --- /dev/null +++ b/i18n/locales/bg/LC_MESSAGES/docs/configuring-playbook-continuwuity.po @@ -0,0 +1,134 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018-2025, Slavi Pantaleev, Aine Etke, MDAD community +# members +# This file is distributed under the same license as the +# matrix-docker-ansible-deploy package. +# FIRST AUTHOR , 2025. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: matrix-docker-ansible-deploy \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-01-27 09:54+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language: bg\n" +"Language-Team: bg \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.16.0\n" + +#: ../../../docs/configuring-playbook-continuwuity.md:1 +msgid "Configuring continuwuity (optional)" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:3 +msgid "The playbook can install and configure the [continuwuity](https://continuwuity.org/) Matrix server for you." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:5 +msgid "See the project's [documentation](https://continuwuity.org/) to learn what it does and why it might be useful to you." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:7 +msgid "By default, the playbook installs [Synapse](https://github.com/element-hq/synapse) as it's the only full-featured Matrix server at the moment. If that's okay, you can skip this document." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:9 +msgid "💡 **Note**: continuwuity is a fork of [conduwuit](./configuring-playbook-conduwuit.md), which the playbook also supports." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:11 +msgid "⚠️ **Warnings**:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:13 +msgid "**You can't switch an existing Matrix server's implementation** (e.g. Synapse -> continuwuity). Proceed below only if you're OK with losing data or you're dealing with a server on a new domain name, which hasn't participated in the Matrix federation yet." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:15 +msgid "**Homeserver implementations other than Synapse may not be fully functional**. The playbook may also not assist you in an optimal way (like it does with Synapse). Make yourself familiar with the downsides before proceeding" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:17 +msgid "Adjusting the playbook configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:19 +msgid "To use continuwuity, you **generally** need to adjust the `matrix_homeserver_implementation: synapse` configuration on your `inventory/host_vars/matrix.example.com/vars.yml` file as below:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:33 +msgid "Extending the configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:35 +msgid "There are some additional things you may wish to configure about the server." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:37 +msgid "Take a look at:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:39 +msgid "`roles/custom/matrix-continuwuity/defaults/main.yml` for some variables that you can customize via your `vars.yml` file" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:40 +msgid "`roles/custom/matrix-continuwuity/templates/continuwuity.toml.j2` for the server's default configuration" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:42 +msgid "There are various Ansible variables that control settings in the `continuwuity.toml` file." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:44 +msgid "If a specific setting you'd like to change does not have a dedicated Ansible variable, you can either submit a PR to us to add it, or you can [override the setting using an environment variable](https://continuwuity.org/configuration#environment-variables) using `matrix_continuwuity_environment_variables_extension`. For example:" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:52 +msgid "Creating the first user account" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:54 +msgid "Unlike other homeserver implementations (like Synapse and Dendrite), continuwuity does not support creating users via the command line or via the playbook." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:56 +msgid "If you followed the instructions above (see [Adjusting the playbook configuration](#adjusting-the-playbook-configuration)), you should have registration enabled and protected by a registration token." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:58 +msgid "This should allow you to create the first user account via any client (like [Element Web](./configuring-playbook-client-element-web.md)) which supports creating users." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:60 +msgid "The **first user account that you create will be marked as an admin** and **will be automatically invited to an admin room**." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:63 +msgid "Configuring bridges / appservices" +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:65 +msgid "For other homeserver implementations (like Synapse and Dendrite), the playbook automatically registers appservices (for bridges, bots, etc.) with the homeserver." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:67 +msgid "For continuwuity, you will have to manually register appservices using the [`!admin appservices register` command](https://continuwuity.org/appservices#set-up-the-appservice---general-instructions) sent to the server bot account." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:69 +msgid "The server's bot account has a Matrix ID of `@conduit:example.com` (not `@continuwuity:example.com`!) due to continuwuity's historical legacy. Your first user account would already have been invited to an admin room with this bot." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:72 +msgid "Find the appservice file you'd like to register. This can be any `registration.yaml` file found in the `/matrix` directory, for example `/matrix/mautrix-signal/bridge/registration.yaml`." +msgstr "" + +#: ../../../docs/configuring-playbook-continuwuity.md:74 +msgid "Then, send its content to the existing admin room:" +msgstr "" diff --git a/setup.yml b/setup.yml index b5aa83412..76aa726a4 100644 --- a/setup.yml +++ b/setup.yml @@ -105,6 +105,7 @@ - custom/matrix-dendrite - custom/matrix-conduit - custom/matrix-conduwuit + - custom/matrix-continuwuity - custom/matrix-synapse-admin - custom/matrix-synapse-usage-exporter - galaxy/prometheus_node_exporter