Relocate Element Web features & element_call configuration to Element role, instead of ugly patching from the Element Call role

This commit is contained in:
Slavi Pantaleev
2024-11-21 19:17:30 +02:00
parent 7a6fcaa402
commit 3f52cec25c
8 changed files with 80 additions and 60 deletions

View File

@ -2,10 +2,12 @@
# Enable or disable matrix-element-call deployment
matrix_element_call_enabled: false
matrix_element_call_scheme: https
matrix_element_call_hostname: "call.{{ matrix_domain }}"
# Base path configuration
matrix_element_call_base_path: "{{ matrix_base_data_path }}/element-call"
matrix_homeserver_config_path: "{{ matrix_base_data_path }}/synapse/config/homeserver.yaml"
element_web_config_path: "{{ matrix_base_data_path }}/client-element/config.json"
# Docker network configuration
matrix_element_call_container_network: ''
@ -18,16 +20,10 @@ matrix_element_call_image: "ghcr.io/element-hq/element-call:latest"
# Ports
matrix_element_call_port: "8093"
# Well-known paths and domains (derived from matrix_domain)
matrix_element_call_domain: "call.{{ matrix_domain }}"
matrix_element_call_well_known_client_path: "{{ matrix_base_data_path }}/static-files/public/.well-known/matrix/client"
matrix_element_call_well_known_element_path: "{{ matrix_base_data_path }}/static-files/public/.well-known/element/element.json"
matrix_element_call_base_url: "https://{{ matrix_element_call_domain }}"
# Traefik Configuration for Element Call
matrix_element_call_container_labels_traefik_enabled: true
matrix_element_call_container_labels_traefik_docker_network: "{{ matrix_element_call_container_network }}"
matrix_element_call_container_labels_traefik_hostname: "{{ matrix_element_call_domain }}"
matrix_element_call_container_labels_traefik_hostname: "{{ matrix_element_call_hostname }}"
# The path prefix must either be `/` or not end with a slash (e.g. `/element`).
matrix_element_call_container_labels_traefik_path_prefix: "{{ matrix_element_call_path_prefix }}"
matrix_element_call_container_labels_traefik_rule: "Host(`{{ matrix_element_call_container_labels_traefik_hostname }}`){% if matrix_element_call_container_labels_traefik_path_prefix != '/' %} && PathPrefix(`{{ matrix_element_call_container_labels_traefik_path_prefix }}`){% endif %}"
@ -122,4 +118,4 @@ matrix_element_call_hsts_preload_enabled: false
# Enable or disable metrics collection
matrix_element_call_metrics_enabled: false
matrix_element_call_metrics_port: 2112
matrix_element_call_metrics_port: 2112

View File

@ -86,8 +86,3 @@
mode: '0644'
owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}"
# Update Element Web config.json with Element Call settings
- name: Update Element Web config.json
ansible.builtin.include_tasks: "tasks/update_element_web_config.yml"
when: matrix_element_call_enabled | bool

View File

@ -1,40 +0,0 @@
- name: Read Element Web config.json
ansible.builtin.slurp:
src: "{{ element_web_config_path }}"
register: element_web_config_content
- name: Load JSON data from config.json
ansible.builtin.set_fact:
element_web_config: "{{ element_web_config_content['content'] | b64decode | from_json }}"
- name: Update Element Call configuration in config.json
ansible.builtin.set_fact:
updated_element_call_config: >
{{
{
"element_call": {
"url": "https://{{ matrix_element_call_domain }}",
"participant_limit": 8,
"brand": "Element Call",
"use_exclusively": true
},
"features": {
"feature_video_rooms": true,
"feature_new_room_decoration_ui": true,
"feature_group_calls": true,
"feature_element_call_video_rooms": true
}
}
}}
- name: Merge updated Element Call configuration with existing config.json
ansible.builtin.set_fact:
element_web_config: "{{ element_web_config | combine(updated_element_call_config, recursive=True) }}"
- name: Write updated Element Web config.json
ansible.builtin.copy:
content: "{{ element_web_config | to_nice_json }}"
dest: "{{ element_web_config_path }}"
mode: '0644'
owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}"

View File

@ -1,5 +1,5 @@
{
"call": {
"widget_url": "https://{{ matrix_element_call_domain }}"
"widget_url": "https://{{ matrix_element_call_hostname }}"
}
}
}

View File

@ -1,5 +1,3 @@
---
# roles/custom/matrix-element-call/vars/main.yml
# Variables specific to matrix-element-call, like service configurations, can go here.
# Any environment-specific values can be overridden here.
matrix_element_call_public_url: "{{ matrix_element_call_scheme }}://{{ matrix_element_call_hostname }}"