Allow UI customization
This commit is contained in:
parent
86e793c624
commit
610a1faca8
5 changed files with 68 additions and 1 deletions
|
|
@ -16,6 +16,9 @@ coturn uses the certificate obtained by the web container and is restarted weekl
|
||||||
It needs 3478/udp+tcp, 5349/tcp and the relay port range 49152-65535/udp to be reachable.
|
It needs 3478/udp+tcp, 5349/tcp and the relay port range 49152-65535/udp to be reachable.
|
||||||
The exporter scrapes the JVB statistics and listens on port 9888.
|
The exporter scrapes the JVB statistics and listens on port 9888.
|
||||||
|
|
||||||
|
Files can be added to or replaced in the Jitsi Meet web root (`/usr/share/jitsi-meet` in the web container) using `jitsi__web_files`, e.g. for branding.
|
||||||
|
They are deployed to `/opt/jitsi/web-files/` and bind-mounted into the web container.
|
||||||
|
|
||||||
## Supported Distributions
|
## Supported Distributions
|
||||||
|
|
||||||
Should work on Debian-based distributions.
|
Should work on Debian-based distributions.
|
||||||
|
|
@ -49,6 +52,10 @@ Should work on Debian-based distributions.
|
||||||
Defaults to `""` (no file).
|
Defaults to `""` (no file).
|
||||||
- `jitsi__custom_interface_config_js`: Content of `custom-interface_config.js`, which gets appended to the generated `interface_config.js`.
|
- `jitsi__custom_interface_config_js`: Content of `custom-interface_config.js`, which gets appended to the generated `interface_config.js`.
|
||||||
Defaults to `""` (no file).
|
Defaults to `""` (no file).
|
||||||
|
- `jitsi__web_files`: List of files to mount into the Jitsi Meet web root.
|
||||||
|
Defaults to `[ ]`.
|
||||||
|
- `jitsi__web_files.*.path`: Path relative to the web root, e.g. `images/watermark.svg` or `static/welcomePageAdditionalContent.html`.
|
||||||
|
- `jitsi__web_files.*.content`: The content of the file.
|
||||||
|
|
||||||
## Links & Resources
|
## Links & Resources
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,3 +6,4 @@ jitsi__prometheus_exporter: false
|
||||||
jitsi__env: { }
|
jitsi__env: { }
|
||||||
jitsi__custom_config_js: ""
|
jitsi__custom_config_js: ""
|
||||||
jitsi__custom_interface_config_js: ""
|
jitsi__custom_interface_config_js: ""
|
||||||
|
jitsi__web_files: [ ]
|
||||||
|
|
|
||||||
|
|
@ -55,3 +55,15 @@ argument_specs:
|
||||||
type: str
|
type: str
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
default: ""
|
||||||
|
jitsi__web_files:
|
||||||
|
type: list
|
||||||
|
elements: dict
|
||||||
|
required: false
|
||||||
|
default: [ ]
|
||||||
|
options:
|
||||||
|
path:
|
||||||
|
type: str
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
type: str
|
||||||
|
required: true
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,46 @@
|
||||||
state: "{{ 'present' if jitsi__turn else 'absent' }}"
|
state: "{{ 'present' if jitsi__turn else 'absent' }}"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
|
# Files mounted into the web container, replacing or adding to the files of Jitsi Meet.
|
||||||
|
- name: make sure the directories for the web files exist
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ jitsi__base_dir }}/web-files/{{ item }}"
|
||||||
|
state: directory
|
||||||
|
mode: "0755"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
become: true
|
||||||
|
loop: "{{ [''] + (jitsi__web_files | map(attribute='path') | map('dirname') | unique | reject('equalto', '') | list) }}"
|
||||||
|
|
||||||
|
- name: deploy the web files
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: "{{ item.content }}"
|
||||||
|
dest: "{{ jitsi__base_dir }}/web-files/{{ item.path }}"
|
||||||
|
mode: "0644"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
become: true
|
||||||
|
loop: "{{ jitsi__web_files }}"
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.path }}"
|
||||||
|
# Single file bind mounts keep pointing to the replaced file until the container is restarted.
|
||||||
|
notify: restart jitsi web
|
||||||
|
|
||||||
|
- name: find web files to remove
|
||||||
|
ansible.builtin.find:
|
||||||
|
paths: "{{ jitsi__base_dir }}/web-files"
|
||||||
|
recurse: true
|
||||||
|
register: jitsi__web_files_found
|
||||||
|
|
||||||
|
- name: remove web files, which should be removed
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: absent
|
||||||
|
become: true
|
||||||
|
loop: "{{ jitsi__web_files_found.files | map(attribute='path') | reject('in', jitsi__web_files_paths) | list }}"
|
||||||
|
vars:
|
||||||
|
jitsi__web_files_paths: "{{ jitsi__web_files | map(attribute='path') | map('regex_replace', '^', jitsi__base_dir ~ '/web-files/') | list }}"
|
||||||
|
|
||||||
# Changes to these make `docker compose up` below recreate the affected containers.
|
# Changes to these make `docker compose up` below recreate the affected containers.
|
||||||
- name: deploy the compose override file
|
- name: deploy the compose override file
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,13 @@ networks:
|
||||||
enable_ipv6: true
|
enable_ipv6: true
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
{% if jitsi__web_files | length > 0 %}
|
||||||
|
web:
|
||||||
|
volumes:
|
||||||
|
{% for file in jitsi__web_files %}
|
||||||
|
- {{ jitsi__base_dir }}/web-files/{{ file.path }}:/usr/share/jitsi-meet/{{ file.path }}:ro
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
{% if jitsi__turn %}
|
{% if jitsi__turn %}
|
||||||
coturn:
|
coturn:
|
||||||
image: docker.io/coturn/coturn:4.18.0
|
image: docker.io/coturn/coturn:4.18.0
|
||||||
|
|
@ -35,6 +42,6 @@ services:
|
||||||
networks:
|
networks:
|
||||||
meet.jitsi:
|
meet.jitsi:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if not (jitsi__turn or jitsi__prometheus_exporter) %}
|
{% if not (jitsi__web_files or jitsi__turn or jitsi__prometheus_exporter) %}
|
||||||
{}
|
{}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue