| @@ -1,21 +1,21 @@ | |||||
| <!-- | <!-- | ||||
| SPDX-FileCopyrightText: 2024 wjbeckett | SPDX-FileCopyrightText: 2024 wjbeckett | ||||
| SPDX-FileCopyrightText: 2024 Slavi Pantaleev | |||||
| SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev | |||||
| SPDX-License-Identifier: AGPL-3.0-or-later | SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| --> | --> | ||||
| # Setting up Element Call (optional) | # Setting up Element Call (optional) | ||||
| The playbook can install and configure [Element Call](https://github.com/vector-im/element-call) for you. | |||||
| The playbook can install and configure [Element Call](https://github.com/element-hq/element-call) for you. | |||||
| Element Call is a WebRTC-based video and voice calling platform that integrates with Matrix clients such as Element Web. It provides secure, decentralized communication with support for video calls, audio calls, and screen sharing. | |||||
| Element Call is a native Matrix video conferencing application developed by [Element](https://element.io), designed for secure, scalable, privacy-respecting, and decentralized video and voice calls over the Matrix protocol. Built on MatrixRTC ([MSC4143](https://github.com/matrix-org/matrix-spec-proposals/pull/4143)), it utilizes [MSC4195](https://github.com/hughns/matrix-spec-proposals/blob/hughns/matrixrtc-livekit/proposals/4195-matrixrtc-livekit.md) with [LiveKit](configuring-playbook-livekit-server.md) as its backend. | |||||
| See the project's [documentation](https://github.com/vector-im/element-call) to learn more. | |||||
| See the project's [documentation](https://github.com/element-hq/element-call) to learn more. | |||||
| ## Decide on a domain and path | ## Decide on a domain and path | ||||
| By default, Element Call is configured to be served on the Matrix domain (`call.DOMAIN`, controlled by the `matrix_element_call_hostname` variable). | |||||
| By default, Element Call is configured to be served on the `call.element.DOMAIN` domain, controlled by the `matrix_element_call_hostname` variable. | |||||
| This makes it easy to set it up, **without** having to adjust your DNS records manually. | This makes it easy to set it up, **without** having to adjust your DNS records manually. | ||||
| @@ -26,21 +26,20 @@ If you'd like to run Element Call on another hostname or path, use the `matrix_e | |||||
| If you've changed the default hostname, **you may need to adjust your DNS** records accordingly to point to the correct server. | If you've changed the default hostname, **you may need to adjust your DNS** records accordingly to point to the correct server. | ||||
| Ensure that the following DNS names have a public IP/FQDN: | Ensure that the following DNS names have a public IP/FQDN: | ||||
| - `call.example.com` | |||||
| - `sfu.example.com` | |||||
| - `call.element.example.com` | |||||
| - `livekit.example.com` | |||||
| - `sfu-jwt.example.com` | - `sfu-jwt.example.com` | ||||
| ## Adjusting the playbook configuration | ## Adjusting the playbook configuration | ||||
| NOTE: Enabling Element Call will automatically enable the [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) and Livekit Server services. | |||||
| Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file: | Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars.yml` file: | ||||
| ```yaml | ```yaml | ||||
| matrix_element_call_enabled: true | matrix_element_call_enabled: true | ||||
| ``` | ``` | ||||
| 💡 Enabling Element Call will automatically enable the [LiveKit JWT Service](configuring-playbook-livekit-jwt-service.md) and [Livekit Server](configuring-playbook-livekit-server.md) services. | |||||
| ## Installing | ## Installing | ||||
| After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the [installation](installing.md) command: `just install-all` or `just setup-all` | After configuring the playbook and potentially [adjusting your DNS records](#adjusting-dns-records), run the [installation](installing.md) command: `just install-all` or `just setup-all` | ||||
| @@ -26,7 +26,7 @@ If you'd like to run Livekit on another hostname or path, use the `livekit_serve | |||||
| If you've changed the default hostname, **you may need to adjust your DNS** records accordingly to point to the correct server. | If you've changed the default hostname, **you may need to adjust your DNS** records accordingly to point to the correct server. | ||||
| Ensure that the following DNS names have a public IP/FQDN: | Ensure that the following DNS names have a public IP/FQDN: | ||||
| - `sfu.example.com` | |||||
| - `livekit.example.com` | |||||
| ## Adjusting the playbook configuration | ## Adjusting the playbook configuration | ||||
| @@ -6261,21 +6261,10 @@ matrix_element_call_enabled: false | |||||
| matrix_element_call_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" | matrix_element_call_scheme: "{{ 'https' if matrix_playbook_ssl_enabled else 'http' }}" | ||||
| matrix_element_call_version: "latest" # Default version; can be overridden in host_vars | |||||
| matrix_element_call_hostname: "call.{{ matrix_domain }}" # Default hostname; should be overridden in host_vars if different | |||||
| matrix_element_call_path_prefix: "/" # Path prefix for Element Call | |||||
| matrix_element_call_base_path: "{{ matrix_base_data_path }}/element-call" # Base path for storing Element Call-related files | |||||
| matrix_element_call_container_image: "ghcr.io/element-hq/element-call:{{ matrix_element_call_version }}" | |||||
| matrix_element_call_container_image_name_prefix: ghcr.io/ | |||||
| matrix_element_call_container_image_registry_prefix: ghcr.io/ | |||||
| matrix_element_call_container_image_force_pull: true | |||||
| # Docker network configuration for Element Call | |||||
| matrix_element_call_container_network: "{{ matrix_addons_container_network }}" | matrix_element_call_container_network: "{{ matrix_addons_container_network }}" | ||||
| matrix_element_call_container_additional_networks: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_element_call_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [] }}" | |||||
| # Traefik Configuration for Element Call | |||||
| matrix_element_call_container_additional_networks_auto: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_element_call_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [] }}" | |||||
| matrix_element_call_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" | matrix_element_call_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" | ||||
| matrix_element_call_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" | matrix_element_call_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" | ||||
| matrix_element_call_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" | matrix_element_call_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" | ||||
| @@ -6302,7 +6291,7 @@ livekit_server_gid: "{{ matrix_user_gid }}" | |||||
| livekit_server_base_path: "{{ matrix_base_data_path }}/livekit-server" | livekit_server_base_path: "{{ matrix_base_data_path }}/livekit-server" | ||||
| livekit_server_hostname: "sfu.{{ matrix_domain }}" | |||||
| livekit_server_hostname: "livekit.{{ matrix_domain }}" | |||||
| livekit_server_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" | livekit_server_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" | ||||
| @@ -1,26 +1,39 @@ | |||||
| # SPDX-FileCopyrightText: 2022 MDAD project contributors | # SPDX-FileCopyrightText: 2022 MDAD project contributors | ||||
| # SPDX-FileCopyrightText: 2024 wjbeckett | # SPDX-FileCopyrightText: 2024 wjbeckett | ||||
| # SPDX-FileCopyrightText: 2024 Slavi Pantaleev | |||||
| # SPDX-FileCopyrightText: 2024 - 2025 Slavi Pantaleev | |||||
| # | # | ||||
| # SPDX-License-Identifier: AGPL-3.0-or-later | # SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| --- | --- | ||||
| # Enable or disable matrix-element-call deployment | |||||
| # Element Call is a native Matrix video conferencing application developed by Element. | |||||
| # Project source code URL: https://github.com/element-hq/element-call | |||||
| matrix_element_call_enabled: false | matrix_element_call_enabled: false | ||||
| matrix_element_call_version: v0.7.2 | |||||
| matrix_element_call_scheme: https | matrix_element_call_scheme: https | ||||
| matrix_element_call_hostname: "call.{{ matrix_domain }}" | |||||
| # Base path configuration | |||||
| matrix_element_call_hostname: "call.element.{{ matrix_domain }}" | |||||
| matrix_element_call_path_prefix: / | |||||
| matrix_element_call_base_path: "{{ matrix_base_data_path }}/element-call" | matrix_element_call_base_path: "{{ matrix_base_data_path }}/element-call" | ||||
| # Docker network configuration | |||||
| matrix_element_call_container_network: '' | |||||
| matrix_element_call_container_image: "{{ matrix_element_call_container_image_registry_prefix }}element-hq/element-call:{{ matrix_element_call_container_image_tag }}" | |||||
| matrix_element_call_container_image_registry_prefix: "{{ matrix_element_call_container_image_registry_prefix_upstream }}" | |||||
| matrix_element_call_container_image_registry_prefix_upstream: "{{ matrix_element_call_container_image_registry_prefix_upstream_default }}" | |||||
| matrix_element_call_container_image_registry_prefix_upstream_default: ghcr.io/ | |||||
| matrix_element_call_container_image_tag: "{{ matrix_element_call_version }}" | |||||
| matrix_element_call_container_image_force_pull: "{{ matrix_element_call_container_image.endswith(':latest') }}" | |||||
| matrix_element_call_container_network: matrix-element-call | |||||
| matrix_element_call_container_http_host_bind_port: '' | matrix_element_call_container_http_host_bind_port: '' | ||||
| matrix_element_call_container_additional_networks: [] # No additional networks by default | |||||
| # Docker images | |||||
| matrix_element_call_image: "ghcr.io/element-hq/element-call:latest" | |||||
| matrix_element_call_container_additional_networks: "{{ matrix_element_call_container_additional_networks_auto + matrix_element_call_container_additional_networks_custom }}" | |||||
| matrix_element_call_container_additional_networks_auto: [] | |||||
| matrix_element_call_container_additional_networks_custom: [] | |||||
| # Ports | # Ports | ||||
| matrix_element_call_port: "8093" | matrix_element_call_port: "8093" | ||||
| @@ -14,4 +14,3 @@ | |||||
| with_items: | with_items: | ||||
| - {'name': 'matrix_element_call_base_path', when: true} | - {'name': 'matrix_element_call_base_path', when: true} | ||||
| - {'name': 'matrix_element_call_container_network', when: true} | - {'name': 'matrix_element_call_container_network', when: true} | ||||
| - {'name': 'matrix_element_call_image', when: true} | |||||
| @@ -28,7 +28,7 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \ | |||||
| {% for arg in matrix_element_call_container_extra_arguments %} | {% for arg in matrix_element_call_container_extra_arguments %} | ||||
| {{ arg }} \ | {{ arg }} \ | ||||
| {% endfor %} | {% endfor %} | ||||
| {{ matrix_element_call_image }} | |||||
| {{ matrix_element_call_container_image }} | |||||
| {% for network in matrix_element_call_container_additional_networks %} | {% for network in matrix_element_call_container_additional_networks %} | ||||
| ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-element-call | ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} network connect {{ network }} matrix-element-call | ||||
| @@ -19,7 +19,7 @@ livekit_server_base_path: "/{{ livekit_server_identifier }}" | |||||
| livekit_server_config_path: "{{ livekit_server_base_path }}/config" | livekit_server_config_path: "{{ livekit_server_base_path }}/config" | ||||
| # renovate: datasource=docker depName=docker.io/livekit/livekit-server | # renovate: datasource=docker depName=docker.io/livekit/livekit-server | ||||
| livekit_server_version: v1.8.0 | |||||
| livekit_server_version: v1.8.4 | |||||
| livekit_server_scheme: https | livekit_server_scheme: https | ||||
| livekit_server_hostname: "" | livekit_server_hostname: "" | ||||