Add livekit_server_identifier

This commit is contained in:
Slavi Pantaleev 2024-11-21 16:54:45 +02:00
parent fa4ebd2a64
commit 783d4a23f8
9 changed files with 46 additions and 52 deletions

View File

@ -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

View File

@ -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 #

View File

@ -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: ""

View File

@ -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

View File

@ -1,5 +1,4 @@
---
# Main task file for matrix-livekit-server
- tags:
- setup-all

View File

@ -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
- name: Remove matrix-livekit-server configuration files
ansible.builtin.file:
path: "{{ matrix_livekit_serverbase_path }}"
state: absent
- name: Reload systemd daemon
ansible.builtin.systemd:
- 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: 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: Ensure LiveKit Server paths don't exist
ansible.builtin.file:
path: "{{ livekit_server_base_path }}"
state: absent

View File

@ -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}

View File

@ -17,4 +17,4 @@ turn:
external_tls: true
keys:
devkey: "{{ livekit_server_livekit_dev_key }}"
devkey: {{ livekit_server_config_keys_devkey | to_json }}