Selaa lähdekoodia

Point LiveKit JWT Service at our homeserver directly, instead of having it discover it

lk-jwt-service v0.6.0 stopped honoring the delay_cs_api_url request parameter
and now locates a user's Client-Server API by fetching the
/.well-known/matrix/client file of that user's base domain itself.

For our own homeserver, this makes the service leave the server over the
public network only to come back to it, which is wasteful at best and does
not work at all where the base domain is not reachable from the host.
Since we know where our homeserver is, we tell the service directly via the
new LIVEKIT_CS_API_URL_OVERRIDES environment variable. Federated homeservers
keep being resolved through discovery.

The service now also joins the container network that the homeserver's
Client-Server API is reachable on, like our other add-on services do.
It used to only be connected to it by coincidence, via the reverse-proxy
network, which left it unable to reach the homeserver when the playbook is
not managing Traefik.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
pull/5553/head
Slavi Pantaleev 1 päivä sitten
vanhempi
commit
ddd99ba244
3 muutettua tiedostoa jossa 26 lisäystä ja 0 poistoa
  1. +9
    -0
      group_vars/matrix_servers
  2. +15
    -0
      roles/custom/matrix-livekit-jwt-service/defaults/main.yml
  3. +2
    -0
      roles/custom/matrix-livekit-jwt-service/templates/env.j2

+ 9
- 0
group_vars/matrix_servers Näytä tiedosto

@@ -6659,6 +6659,8 @@ matrix_livekit_jwt_service_container_network: "{{ matrix_addons_container_networ

matrix_livekit_jwt_service_container_additional_networks_auto: |
{{
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
+
([matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_livekit_jwt_service_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [])
}}

@@ -6669,6 +6671,13 @@ matrix_livekit_jwt_service_container_labels_traefik_tls_certResolver: "{{ traefi

matrix_livekit_jwt_service_environment_variable_livekit_url: "{{ livekit_server_websocket_public_url }}"

# The service discovers where a homeserver's Client-Server API lives by fetching the `/.well-known/matrix/client`
# file of that homeserver's base domain over the public network.
# For our own homeserver, we already know the answer and can spare it the round trip, which would otherwise
# need to leave the server and come back to it.
# Other (federated) homeservers are still resolved via discovery.
matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides_map_auto: "{{ {matrix_domain: matrix_addons_homeserver_client_api_url} }}"

matrix_livekit_jwt_service_environment_variable_livekit_key: "{{ (matrix_homeserver_generic_secret_key + ':lk.key') | hash('sha512') | to_uuid }}"

matrix_livekit_jwt_service_environment_variable_livekit_secret: "{{ (matrix_homeserver_generic_secret_key + ':lk.secret') | hash('sha512') | to_uuid }}"


+ 15
- 0
roles/custom/matrix-livekit-jwt-service/defaults/main.yml Näytä tiedosto

@@ -101,6 +101,21 @@ matrix_livekit_jwt_service_environment_variable_livekit_full_access_homeservers_
matrix_livekit_jwt_service_environment_variable_livekit_full_access_homeservers_list_auto: []
matrix_livekit_jwt_service_environment_variable_livekit_full_access_homeservers_list_custom: []

# Controls the LIVEKIT_CS_API_URL_OVERRIDES environment variable.
#
# To learn where a user's homeserver serves its Client-Server API, the service performs `.well-known` discovery.
# That is, it requests `https://<server-name>/.well-known/matrix/client` over the network and reads `m.homeserver.base_url` out of it.
# Entries listed here are consulted first, so that the server names they cover are resolved without discovery.
#
# Keys are Matrix server names and values are Client-Server API base URLs (including the scheme).
# A playbook may inject an entry for the homeserver it manages, pointing the service at it directly.
#
# To add your own entries, use `matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides_map_custom`.
matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides: "{{ matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides_map.items() | map('join', '=') | join(',') }}"
matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides_map: "{{ matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides_map_auto | combine(matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides_map_custom) }}"
matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides_map_auto: {}
matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides_map_custom: {}

# Additional environment variables to pass to the container.
#
# Environment variables take priority over settings in the configuration file.


+ 2
- 0
roles/custom/matrix-livekit-jwt-service/templates/env.j2 Näytä tiedosto

@@ -13,4 +13,6 @@ LIVEKIT_SECRET={{ matrix_livekit_jwt_service_environment_variable_livekit_secret

LIVEKIT_FULL_ACCESS_HOMESERVERS={{ matrix_livekit_jwt_service_environment_variable_livekit_full_access_homeservers }}

LIVEKIT_CS_API_URL_OVERRIDES={{ matrix_livekit_jwt_service_environment_variable_livekit_cs_api_url_overrides }}

{{ matrix_livekit_jwt_service_environment_variables_extension }}

Ladataan…
Peruuta
Tallenna