From 783d4a23f82cfb65143991f9266c89dd4034d87d Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Thu, 21 Nov 2024 16:54:45 +0200 Subject: [PATCH] Add livekit_server_identifier --- docs/configuring-playbook-element-call.md | 2 +- group_vars/matrix_servers | 12 ++++--- .../matrix-livekit-server/defaults/main.yml | 19 ++++------ .../matrix-livekit-server/tasks/install.yml | 19 ++++------ .../matrix-livekit-server/tasks/main.yml | 1 - .../matrix-livekit-server/tasks/uninstall.yml | 36 ++++++++++--------- .../tasks/validate_config.yml | 7 ++-- .../templates/livekit.yaml.j2 | 2 +- ...r.service.j2 => livekit-server.service.j2} | 0 9 files changed, 46 insertions(+), 52 deletions(-) rename roles/custom/matrix-livekit-server/templates/systemd/{matrix-livekit-server.service.j2 => livekit-server.service.j2} (100%) diff --git a/docs/configuring-playbook-element-call.md b/docs/configuring-playbook-element-call.md index 19ce11d6b..663a07038 100644 --- a/docs/configuring-playbook-element-call.md +++ b/docs/configuring-playbook-element-call.md @@ -34,7 +34,7 @@ Add the following configuration to your `inventory/host_vars/matrix.DOMAIN/vars. matrix_element_call_enabled: true # Set a secure key for LiveKit authentication -livekit_server_dev_key: 'your-secure-livekit-key' +livekit_server_config_keys_devkey: 'your-secure-livekit-key' ``` ## Installing diff --git a/group_vars/matrix_servers b/group_vars/matrix_servers index 0b1707b7f..b1948b0a6 100755 --- a/group_vars/matrix_servers +++ b/group_vars/matrix_servers @@ -442,7 +442,7 @@ devture_systemd_service_manager_services_list_auto: | + ([{'name': 'matrix-jwt-service.service', 'priority': 3000, 'groups': ['matrix', 'jwt-service']}] if matrix_jwt_service_enabled else []) + - ([{'name': 'matrix-livekit-server.service', 'priority': 3000, 'groups': ['matrix', 'livekit-server']}] if livekit_server_enabled else []) + ([{'name': (livekit_server_identifier + '.service'), 'priority': 3000, 'groups': ['matrix', 'livekit-server']}] if livekit_server_enabled else []) + ([{'name': 'matrix-registration.service', 'priority': 4000, 'groups': ['matrix', 'registration', 'matrix-registration']}] if matrix_registration_enabled else []) + @@ -6064,6 +6064,10 @@ matrix_element_call_container_labels_traefik_tls_certResolver: "{{ traefik_certR livekit_server_enabled: "{{ matrix_element_call_enabled }}" +livekit_server_identifier: matrix-livekit-server + +livekit_server_base_path: "{{ matrix_base_data_path }}/livekit-server" + livekit_server_hostname: "sfu.{{ matrix_domain }}" livekit_server_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}" @@ -6071,13 +6075,11 @@ livekit_server_container_image_self_build: "{{ matrix_architecture not in ['arm6 livekit_server_container_network: "{{ matrix_addons_container_network }}" livekit_server_container_additional_networks_auto: "{{ [matrix_playbook_reverse_proxyable_services_additional_network] if (livekit_server_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else [] }}" -# Traefik Configuration for Livekit -matrix_livekit_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" -matrix_livekit_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" +livekit_server_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}" +livekit_server_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}" livekit_server_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}" livekit_server_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}" - ######################################################################## # # # /livekit-server # diff --git a/roles/custom/matrix-livekit-server/defaults/main.yml b/roles/custom/matrix-livekit-server/defaults/main.yml index b080f1022..bd918011f 100644 --- a/roles/custom/matrix-livekit-server/defaults/main.yml +++ b/roles/custom/matrix-livekit-server/defaults/main.yml @@ -4,18 +4,17 @@ livekit_server_enabled: false -# Base path configuration -livekit_server_base_path: "{{ matrix_base_data_path }}/livekit-server" +livekit_server_identifier: livekit-server + +livekit_server_base_path: "/{{ livekit_server_identifier }}" # renovate: datasource=docker depName=livekit/livekit-server livekit_server_version: v1.8.0 livekit_server_hostname: "" -livekit_server_path_prefix: "/" +livekit_server_path_prefix: / -# Docker network configuration -livekit_server_container_network: '' -livekit_server_container_http_host_bind_port: '' +livekit_server_container_network: "{{ livekit_server_identifier }}" livekit_server_container_additional_networks: "{{ livekit_server_container_additional_networks_auto + livekit_server_container_additional_networks_custom }}" livekit_server_container_additional_networks_auto: [] @@ -30,12 +29,6 @@ livekit_server_container_image: "{{ livekit_server_container_image_name_prefix } livekit_server_container_image_name_prefix: "{{ 'localhost/' if livekit_server_container_image_self_build else 'docker.io/' }}" livekit_server_container_image_force_pull: "{{ livekit_server_container_image.endswith(':latest') }}" -# LiveKit configuration -livekit_server_livekit_server_dev_key: "{{ livekit_server_dev_key }}" # Must be defined in host_vars -livekit_server_jwt_secret: "{{ matrix_element_call_jwt_secret }}" # Must be defined in host_vars -livekit_server_hostname: "sfu.{{ matrix_domain }}" - -# Traefik Configuration for Element Call livekit_server_container_labels_traefik_enabled: true livekit_server_container_labels_traefik_docker_network: "{{ livekit_server_container_network }}" livekit_server_container_labels_traefik_hostname: "{{ livekit_server_hostname }}" @@ -130,3 +123,5 @@ livekit_server_floc_optout_enabled: false # - https://hstspreload.org/#opt-in # See: `livekit_server_http_header_strict_transport_security` livekit_server_hsts_preload_enabled: true + +livekit_server_config_keys_devkey: "" diff --git a/roles/custom/matrix-livekit-server/tasks/install.yml b/roles/custom/matrix-livekit-server/tasks/install.yml index 30c2e87cd..70b2b39a1 100644 --- a/roles/custom/matrix-livekit-server/tasks/install.yml +++ b/roles/custom/matrix-livekit-server/tasks/install.yml @@ -1,8 +1,6 @@ --- -# roles/custom/matrix-livekit-server/tasks/install.yml -# Ensure Required Directories Exist -- name: Ensure matrix-livekit-server paths exist +- name: Ensure LiveKit Server paths exist ansible.builtin.file: path: "{{ item.path }}" state: directory @@ -12,8 +10,7 @@ with_items: - path: "{{ livekit_server_base_path }}" -# Ensure Configuration Files are in Place -- name: Ensure LiveKit livekit.yaml is in place +- name: Ensure LiveKit Server livekit.yaml is in place ansible.builtin.template: src: "{{ role_path }}/templates/livekit.yaml.j2" dest: "{{ livekit_server_base_path }}/livekit.yaml" @@ -21,7 +18,7 @@ owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" -- name: Ensure LiveKit labels file is in place +- name: Ensure LiveKit Server labels file is in place ansible.builtin.template: src: "{{ role_path }}/templates/labels.j2" dest: "{{ livekit_server_base_path }}/labels" @@ -29,8 +26,7 @@ owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" -# Ensure Docker Images are Pulled -- name: Ensure LiveKit Docker image is pulled +- name: Ensure LiveKit Server container image is pulled community.docker.docker_image: name: "{{ livekit_server_container_image }}" source: pull @@ -39,9 +35,8 @@ delay: 10 until: livekit_image_result is not failed -# Systemd Services for LiveKit -- name: Ensure LiveKit systemd service is installed +- name: Ensure LiveKit Server systemd service is installed ansible.builtin.template: - src: "{{ role_path }}/templates/systemd/matrix-livekit-server.service.j2" - dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-livekit-server.service" + src: "{{ role_path }}/templates/systemd/livekit-server.service.j2" + dest: "{{ devture_systemd_docker_base_systemd_path }}/{{ livekit_server_identifier }}.service" mode: 0644 diff --git a/roles/custom/matrix-livekit-server/tasks/main.yml b/roles/custom/matrix-livekit-server/tasks/main.yml index 349d63be6..2929a2917 100644 --- a/roles/custom/matrix-livekit-server/tasks/main.yml +++ b/roles/custom/matrix-livekit-server/tasks/main.yml @@ -1,5 +1,4 @@ --- -# Main task file for matrix-livekit-server - tags: - setup-all diff --git a/roles/custom/matrix-livekit-server/tasks/uninstall.yml b/roles/custom/matrix-livekit-server/tasks/uninstall.yml index fdedf475a..141fe0c21 100644 --- a/roles/custom/matrix-livekit-server/tasks/uninstall.yml +++ b/roles/custom/matrix-livekit-server/tasks/uninstall.yml @@ -1,21 +1,25 @@ --- -# Uninstall tasks for matrix-livekit-server -- name: Stop and remove LiveKit container - community.docker.docker_container: - name: "matrix-livekit-server" - state: absent +- name: Check existence of LiveKit Server service + ansible.builtin.stat: + path: "{{ devture_systemd_docker_base_systemd_path }}/{{ livekit_server_identifier }}.service" + register: livekit_server_service_stat -- name: Remove LiveKit systemd service - ansible.builtin.file: - path: "{{ devture_systemd_docker_base_systemd_path }}/matrix-livekit-server.service" - state: absent +- when: livekit_server_service_stat.stat.exists | bool + block: + - name: Ensure LiveKit Server is stopped + ansible.builtin.service: + name: "{{ livekit_server_identifier }}" + state: stopped + enabled: false + daemon_reload: true -- name: Remove matrix-livekit-server configuration files - ansible.builtin.file: - path: "{{ matrix_livekit_serverbase_path }}" - state: absent + - name: Ensure LiveKit Server systemd service doesn't exist + ansible.builtin.file: + path: "{{ devture_systemd_docker_base_systemd_path }}/{{ livekit_server_identifier }}.service" + state: absent -- name: Reload systemd daemon - ansible.builtin.systemd: - daemon_reload: true \ No newline at end of file + - name: Ensure LiveKit Server paths don't exist + ansible.builtin.file: + path: "{{ livekit_server_base_path }}" + state: absent diff --git a/roles/custom/matrix-livekit-server/tasks/validate_config.yml b/roles/custom/matrix-livekit-server/tasks/validate_config.yml index 9d55b3733..54532668e 100644 --- a/roles/custom/matrix-livekit-server/tasks/validate_config.yml +++ b/roles/custom/matrix-livekit-server/tasks/validate_config.yml @@ -1,14 +1,13 @@ --- -# Validate configuration for matrix-livekit-server -- name: Fail if required matrix-livekit-server settings are not defined +- name: Fail if required LiveKit Server settings are not defined ansible.builtin.fail: msg: > You need to define a required configuration setting (`{{ item.name }}`). - when: "item.when | bool and vars[item.name] == ''" + when: "item.when | bool and vars[item.name] | length == 0" with_items: - {'name': 'livekit_server_hostname', when: true} - {'name': 'livekit_server_base_path', when: true} - {'name': 'livekit_server_container_network', when: true} - {'name': 'livekit_server_container_image', when: true} - - {'name': 'livekit_server_container_image', when: true} + - {'name': 'livekit_server_config_keys_devkey', when: true} diff --git a/roles/custom/matrix-livekit-server/templates/livekit.yaml.j2 b/roles/custom/matrix-livekit-server/templates/livekit.yaml.j2 index 04fcb1170..f6b2f716f 100644 --- a/roles/custom/matrix-livekit-server/templates/livekit.yaml.j2 +++ b/roles/custom/matrix-livekit-server/templates/livekit.yaml.j2 @@ -17,4 +17,4 @@ turn: external_tls: true keys: - devkey: "{{ livekit_server_livekit_dev_key }}" + devkey: {{ livekit_server_config_keys_devkey | to_json }} diff --git a/roles/custom/matrix-livekit-server/templates/systemd/matrix-livekit-server.service.j2 b/roles/custom/matrix-livekit-server/templates/systemd/livekit-server.service.j2 similarity index 100% rename from roles/custom/matrix-livekit-server/templates/systemd/matrix-livekit-server.service.j2 rename to roles/custom/matrix-livekit-server/templates/systemd/livekit-server.service.j2