mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2026-07-14 10:42:29 +03:00
c7819f576a
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>
144 lines
6.0 KiB
YAML
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)
|
|
}}
|