| @@ -1,3 +1,52 @@ | |||||
| # 2024-01-14 | |||||
| ## (Backward Compatibility) Configuration changes required for people fronting the integrated reverse-proxy webserver with another reverse-proxy | |||||
| If you're on the default setup (using the Traefik reverse-proxy as installed by the playbook), you don't need to do anything. | |||||
| People who are [Fronting the integrated Traefik reverse-proxy webserver with another reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy), as per our previous instructions are redefining `devture_traefik_additional_entrypoints_auto` in their `vars.yml` configuration. | |||||
| Such a full variable redefinion is intrustive, because it prevents the playbook from injecting additional entrypoints into the Traefik webserver. In the future, the playbook may have a need to do so. | |||||
| For this reason, we no longer recommend completely redefining `devture_traefik_additional_entrypoints_auto`. | |||||
| The playbook now defines [various `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_*` variables in the `defaults/main.yml` file](https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/roles/custom/matrix-base/defaults/main.yml) of the `matrix-base` role which can be used as a safer alternative to `devture_traefik_additional_entrypoints_auto`. | |||||
| Adapt your configuration as seen below: | |||||
| ```diff | |||||
| -devture_traefik_additional_entrypoints_auto: | |||||
| - - name: matrix-federation | |||||
| - port: 8449 | |||||
| - host_bind_port: '127.0.0.1:8449' | |||||
| - config: {} | |||||
| - # If your reverse-proxy runs on another machine, remove the config above and use this config instead: | |||||
| - # config: | |||||
| - # forwardedHeaders: | |||||
| - # insecure: true | |||||
| - # # trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY'] | |||||
| +# Uncomment and tweak the variable below if the name of your federation entrypoint is different | |||||
| +# than the default value (matrix-federation). | |||||
| +# matrix_federation_traefik_entrypoint: matrix-federation | |||||
| + | |||||
| +# Uncomment and tweak the variable below if you really wish to change the internal port number | |||||
| +# that the federation endpoint uses. Changing it is generally not necessary. | |||||
| +# Usually, changing `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port` below is enough. | |||||
| +#matrix_playbook_public_matrix_federation_api_traefik_entrypoint_port: 8449 | |||||
| + | |||||
| +matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port: 127.0.0.1:8449 | |||||
| + | |||||
| +# Adapt the variable below based on where your reverse-proxy runs: | |||||
| +# - if it's on the Matrix server: keep `forwardedHeaders` and `insecure: true` as is | |||||
| +# - if it's on another machine: remove `forwardedHeaders` and `insecure: true` and enable/configure `trustedIPs` | |||||
| +matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom: | |||||
| + forwardedHeaders: | |||||
| + insecure: true | |||||
| + # trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY'] | |||||
| ``` | |||||
| Also, feel free to read the [Fronting the integrated Traefik reverse-proxy webserver with another reverse-proxy](./docs/configuring-playbook-own-webserver.md#fronting-the-integrated-reverse-proxy-webserver-with-another-reverse-proxy) documentation section again for additional details. | |||||
| # 2024-01-13 | # 2024-01-13 | ||||
| ## matrix-reminder-bot update with more secure (backward-incompatible) default settings | ## matrix-reminder-bot update with more secure (backward-incompatible) default settings | ||||
| @@ -140,25 +140,28 @@ devture_traefik_container_web_host_bind_port: '127.0.0.1:81' | |||||
| # We bind to `127.0.0.1` by default (see above), so trusting `X-Forwarded-*` headers from | # We bind to `127.0.0.1` by default (see above), so trusting `X-Forwarded-*` headers from | ||||
| # a reverse-proxy running on the local machine is safe enough. | # a reverse-proxy running on the local machine is safe enough. | ||||
| # If you're publishing the port (`devture_traefik_container_web_host_bind_port` above) to a public network interface: | |||||
| # - remove the `devture_traefik_config_entrypoint_web_forwardedHeaders_insecure` variable definition below | |||||
| # - uncomment and adjust the `devture_traefik_config_entrypoint_web_forwardedHeaders_trustedIPs` line below | |||||
| devture_traefik_config_entrypoint_web_forwardedHeaders_insecure: true | devture_traefik_config_entrypoint_web_forwardedHeaders_insecure: true | ||||
| # Or, if you're publishing the port (`devture_traefik_container_web_host_bind_port` above) to a public network interfaces: | |||||
| # - remove the `devture_traefik_config_entrypoint_web_forwardedHeaders_insecure` variable definition above | |||||
| # - uncomment and adjust the line below | |||||
| # devture_traefik_config_entrypoint_web_forwardedHeaders_trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY'] | # devture_traefik_config_entrypoint_web_forwardedHeaders_trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY'] | ||||
| # Likewise (to `devture_traefik_container_web_host_bind_port` above), | |||||
| # if your reverse-proxy runs on another machine, consider changing the `host_bind_port` setting below. | |||||
| devture_traefik_additional_entrypoints_auto: | |||||
| - name: matrix-federation | |||||
| port: 8449 | |||||
| host_bind_port: '127.0.0.1:8449' | |||||
| config: {} | |||||
| # If your reverse-proxy runs on another machine, remove the config above and use this config instead: | |||||
| # config: | |||||
| # forwardedHeaders: | |||||
| # insecure: true | |||||
| # # trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY'] | |||||
| # Expose the federation entrypoint on a custom port (other than port 8448, which is normally used publicly). | |||||
| # | |||||
| # We bind to `127.0.0.1` by default (see above), so trusting `X-Forwarded-*` headers from | |||||
| # a reverse-proxy running on the local machine is safe enough. | |||||
| # | |||||
| # If your reverse-proxy runs on another machine, consider: | |||||
| # - using `0.0.0.0:8449`, just `8449` or `SOME_IP_ADDRESS_OF_THIS_MACHINE:8449` below | |||||
| # - adjusting `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom` (below) - removing `insecure: true` and enabling/configuring `trustedIPs` | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port: 127.0.0.1:8449 | |||||
| # Depending on the value of `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port` above, | |||||
| # this may need to be reconfigured. See the comments above. | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom: | |||||
| forwardedHeaders: | |||||
| insecure: true | |||||
| # trustedIPs: ['IP-ADDRESS-OF-YOUR-REVERSE-PROXY'] | |||||
| ``` | ``` | ||||
| For an example where the playbook's Traefik reverse-proxy is fronted by another reverse-proxy running on the same server, see [Nginx reverse-proxy fronting the playbook's Traefik](../examples/nginx/README.md) or [Caddy reverse-proxy fronting the playbook's Traefik](../examples/caddy2/README.md). | For an example where the playbook's Traefik reverse-proxy is fronted by another reverse-proxy running on the same server, see [Nginx reverse-proxy fronting the playbook's Traefik](../examples/nginx/README.md) or [Caddy reverse-proxy fronting the playbook's Traefik](../examples/caddy2/README.md). | ||||
| @@ -31,6 +31,9 @@ matrix_playbook_ssl_retrieval_method: "{{ 'lets-encrypt' if devture_traefik_cert | |||||
| matrix_playbook_ssl_enabled: "{{ matrix_playbook_ssl_retrieval_method in ['lets-encrypt', 'self-signed', 'manually-managed'] }}" | matrix_playbook_ssl_enabled: "{{ matrix_playbook_ssl_retrieval_method in ['lets-encrypt', 'self-signed', 'manually-managed'] }}" | ||||
| # A separate Matrix Federation entrypoint is always enabled, unless the federation port matches one of the ports for existing (default) entrypoints | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_enabled: "{{ matrix_federation_public_port not in [devture_traefik_config_entrypoint_web_port, devture_traefik_config_entrypoint_web_secure_port] }}" | |||||
| ######################################################################## | ######################################################################## | ||||
| # # | # # | ||||
| # /Playbook # | # /Playbook # | ||||
| @@ -4489,15 +4492,9 @@ devture_traefik_base_path: "{{ matrix_base_data_path }}/traefik" | |||||
| devture_traefik_uid: "{{ matrix_user_uid }}" | devture_traefik_uid: "{{ matrix_user_uid }}" | ||||
| devture_traefik_gid: "{{ matrix_user_gid }}" | devture_traefik_gid: "{{ matrix_user_gid }}" | ||||
| devture_traefik_federation_entrypoint: | |||||
| name: matrix-federation | |||||
| port: "{{ matrix_federation_public_port }}" | |||||
| host_bind_port: "{{ matrix_federation_public_port }}" | |||||
| config: {} | |||||
| devture_traefik_additional_entrypoints_auto: | | devture_traefik_additional_entrypoints_auto: | | ||||
| {{ | {{ | ||||
| ([devture_traefik_federation_entrypoint] if (matrix_federation_public_port != devture_traefik_config_entrypoint_web_port) and (matrix_federation_public_port != devture_traefik_config_entrypoint_web_secure_port) else []) | |||||
| ([matrix_playbook_public_matrix_federation_api_traefik_entrypoint_definition] if matrix_playbook_public_matrix_federation_api_traefik_entrypoint_enabled else []) | |||||
| }} | }} | ||||
| devture_traefik_additional_domains_to_obtain_certificates_for: "{{ matrix_ssl_additional_domains_to_obtain_certificates_for }}" | devture_traefik_additional_domains_to_obtain_certificates_for: "{{ matrix_ssl_additional_domains_to_obtain_certificates_for }}" | ||||
| @@ -108,6 +108,7 @@ matrix_server_fqn_rageshake: "rageshake.{{ matrix_domain }}" | |||||
| matrix_federation_public_port: 8448 | matrix_federation_public_port: 8448 | ||||
| # The name of the Traefik entrypoint for handling Matrix Federation | # The name of the Traefik entrypoint for handling Matrix Federation | ||||
| # Also see the `matrix_playbook_public_matrix_federation_api_traefik_entrypoint_*` variables. | |||||
| matrix_federation_traefik_entrypoint: matrix-federation | matrix_federation_traefik_entrypoint: matrix-federation | ||||
| # The architecture that your server runs. | # The architecture that your server runs. | ||||
| @@ -341,6 +342,23 @@ matrix_playbook_reverse_proxy_type: '' | |||||
| matrix_playbook_service_host_bind_interface_prefix: "{{ '' if matrix_playbook_reverse_proxy_type not in ['other-nginx-non-container', 'other-on-same-host', 'other-on-another-host'] else ('0.0.0.0:' if matrix_playbook_reverse_proxy_type == 'other-on-another-host' else '127.0.0.1:') }}" | matrix_playbook_service_host_bind_interface_prefix: "{{ '' if matrix_playbook_reverse_proxy_type not in ['other-nginx-non-container', 'other-on-same-host', 'other-on-another-host'] else ('0.0.0.0:' if matrix_playbook_reverse_proxy_type == 'other-on-another-host' else '127.0.0.1:') }}" | ||||
| # Controls whether to enable an additional Traefik entrypoint for the purpose of serving Matrix Federation. | |||||
| # By default, federation is served on a special port (8448), so a separate entrypoint is necessary. | |||||
| # Group variables may influence whether this is enabled based on the port number and on the default entrypoints of the Traefik reverse-proxy. | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_enabled: true | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_name: "{{ matrix_federation_traefik_entrypoint }}" | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_port: "{{ matrix_federation_public_port }}" | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port: "{{ matrix_federation_public_port }}" | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config: "{{ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_auto | combine(matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom, recursive=True) }}" | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_auto: {} | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config_custom: {} | |||||
| matrix_playbook_public_matrix_federation_api_traefik_entrypoint_definition: | |||||
| name: "{{ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_name }}" | |||||
| port: "{{ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_port }}" | |||||
| host_bind_port: "{{ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_host_bind_port }}" | |||||
| config: "{{ matrix_playbook_public_matrix_federation_api_traefik_entrypoint_config }}" | |||||
| # Variables to Control which parts of our roles run. | # Variables to Control which parts of our roles run. | ||||
| run_postgres_import: true | run_postgres_import: true | ||||
| run_postgres_upgrade: true | run_postgres_upgrade: true | ||||