Files
matrix-docker-ansible-deploy/roles/custom/matrix-client-element/tasks/setup_install.yml
T
Slavi Pantaleev c7819f576a Remove the custom Element Web welcome page
Element Web redesigned its welcome page into a built-in component
(element-hq/element-web#33211, first released in spring 2026) and no
longer falls back to loading welcome.html. The custom page the playbook
installed had therefore silently stopped having any effect, and it was a
fork of an upstream file that upstream has deleted (its button icon
assets are already missing from current Element Web builds).

Remove the welcome.html shipping and the variables that only applied to
it (matrix_client_element_welcome_headline, _welcome_text,
_welcome_logo_link, _page_template_welcome_path), rejecting them in
validate_config.yml with pointers to the alternatives. Logo and
background customization keep working through Element Web's branding
options, which the new welcome page still honors. A fully custom page
can be self-hosted and wired via embedded_pages.welcome_url.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 07:49:39 +03:00

144 lines
6.0 KiB
YAML

# SPDX-FileCopyrightText: 2020 - 2024 Slavi Pantaleev
# SPDX-FileCopyrightText: 2022 MDAD project contributors
# SPDX-FileCopyrightText: 2022 Marko Weltzer
# SPDX-FileCopyrightText: 2022 Nikita Chernyi
# SPDX-FileCopyrightText: 2022 Sebastian Gumprich
# SPDX-FileCopyrightText: 2023 Pierre 'McFly' Marty
# SPDX-FileCopyrightText: 2024 David Mehren
# SPDX-FileCopyrightText: 2024 Suguru Hirahara
#
# SPDX-License-Identifier: AGPL-3.0-or-later
---
- name: Ensure Element Web paths exists
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: '0750'
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- {path: "{{ matrix_client_element_data_path }}", when: true}
- {path: "{{ matrix_client_element_container_src_files_path }}", when: "{{ matrix_client_element_container_image_self_build }}"}
when: "item.when | bool"
- name: Ensure Element Web Docker image is pulled
community.docker.docker_image_pull:
name: "{{ matrix_client_element_container_image }}"
pull: always
when: "not matrix_client_element_container_image_self_build | bool"
register: matrix_client_element_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}"
until: matrix_client_element_container_image_pull_result is not failed
- name: Ensure Element Web repository is present on self-build
ansible.builtin.git:
repo: "{{ matrix_client_element_container_image_self_build_repo }}"
dest: "{{ matrix_client_element_container_src_files_path }}"
version: "{{ matrix_client_element_container_image.split(':')[1] }}"
force: "yes"
become: true
become_user: "{{ matrix_user_name }}"
register: matrix_client_element_git_pull_results
when: "matrix_client_element_container_image_self_build | bool"
# See:
# - https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/1357
# - https://github.com/element-hq/element-web/issues/19544
- name: Patch webpack.config.js to support building on low-memory (<4G RAM) devices
ansible.builtin.lineinfile:
path: "{{ matrix_client_element_container_src_files_path }}/webpack.config.js"
regexp: '(\s+)splitChunks: \{'
line: '\1splitChunks: { maxSize: 100000,'
backrefs: true
owner: root
group: root
mode: '0644'
when: "matrix_client_element_container_image_self_build | bool and matrix_client_element_container_image_self_build_low_memory_system_patch_enabled | bool"
- name: Ensure Element Web Docker image is built
ansible.builtin.command:
cmd: |-
{{ devture_systemd_docker_base_host_command_docker }} buildx build
--tag={{ matrix_client_element_container_image }}
--file={{ matrix_client_element_container_src_dockerfile_path }}
{{ matrix_client_element_container_src_files_path }}
changed_when: true
when: matrix_client_element_container_image_self_build | bool
- name: Ensure Element Web configuration installed
ansible.builtin.copy:
content: "{{ matrix_client_element_configuration | to_nice_json }}"
dest: "{{ matrix_client_element_data_path }}/config.json"
mode: '0644'
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
register: matrix_client_element_config_result
- name: Ensure Element location sharing map style installed
when: matrix_client_element_location_sharing_enabled | bool
ansible.builtin.copy:
content: "{{ matrix_client_element_location_sharing_map_style | to_nice_json }}"
dest: "{{ matrix_client_element_data_path }}/map_style.json"
mode: '0644'
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
register: matrix_client_element_config_map_style_result
- name: Ensure Element Web config files installed
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ matrix_client_element_data_path }}/{{ item.name }}"
mode: '0644'
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- {src: "{{ role_path }}/templates/labels.j2", name: "labels"}
- {src: "{{ role_path }}/templates/env.j2", name: "env"}
- {src: "{{ matrix_client_element_embedded_pages_home_path }}", name: "home.html"}
when: "item.src is not none"
register: matrix_client_element_support_files_result
- name: Ensure Element Web nginx.conf file is removed
ansible.builtin.file:
path: "{{ matrix_client_element_data_path }}/nginx.conf"
state: absent
- name: Ensure Element Web config files removed
ansible.builtin.file:
path: "{{ matrix_client_element_data_path }}/{{ item.name }}"
state: absent
with_items:
- {src: "{{ matrix_client_element_embedded_pages_home_path }}", name: "home.html"}
# The playbook no longer ships a custom welcome.html (Element Web renders its own built-in welcome page).
- {src: ~, name: "welcome.html"}
when: "item.src is none"
- name: Ensure Element Web container network is created
when: matrix_client_element_container_network != 'host'
community.general.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_client_element_container_network }}"
driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"
- name: Ensure matrix-client-element.service installed
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-client-element.service.j2"
dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-client-element.service"
mode: '0644'
register: matrix_client_element_systemd_service_result
- name: Determine whether Element Web needs a restart
ansible.builtin.set_fact:
matrix_client_element_restart_necessary: >-
{{
matrix_client_element_config_result.changed | default(false)
or matrix_client_element_config_map_style_result.changed | default(false)
or matrix_client_element_support_files_result.changed | default(false)
or matrix_client_element_systemd_service_result.changed | default(false)
or matrix_client_element_container_image_pull_result.changed | default(false)
}}