Files
matrix-docker-ansible-deploy/roles/custom/matrix-static-files/tasks/install.yml
T
Slavi Pantaleev 4aca22dd96 matrix-static-files: advertise exposed mautrix bridges via /.well-known/matrix/mautrix
Emit a /.well-known/matrix/mautrix file listing the base URLs of all
enabled and exposed mautrix bridges under the `fi.mau.bridges` property,
so tools like Mautrix Manager (https://github.com/mautrix/manager) can
auto-discover them.

The list is built in group_vars from each bridge's public address and is
gated on the bridge being enabled, the playbook attaching its Traefik
labels, and the exposure router being emitted, so we only advertise URLs
that are actually reachable. The file follows the same auto/custom and
configuration-extension pattern as the other well-known files and is only
written when the list is non-empty.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 17:05:55 +03:00

130 lines
5.5 KiB
YAML

# SPDX-FileCopyrightText: 2024 David Mehren
# SPDX-FileCopyrightText: 2024 Slavi Pantaleev
#
# SPDX-License-Identifier: AGPL-3.0-or-later
---
- name: Ensure matrix-static-files paths exist
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
mode: '0750'
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
with_items:
- {path: "{{ matrix_static_files_base_path }}", when: true}
- {path: "{{ matrix_static_files_config_path }}", when: true}
- {path: "{{ matrix_static_files_public_path }}", when: true}
- {path: "{{ matrix_static_files_public_well_known_path }}", when: true}
- {path: "{{ matrix_static_files_public_well_known_matrix_path }}", when: true}
when: "item.when | bool"
# This is not necessary anymore, so we're cleaning it up.
- name: Ensure matrix-static-files element path doesn't exist
ansible.builtin.file:
path: "{{ matrix_static_files_public_well_known_element_path }}"
state: absent
- name: Ensure matrix-static-files is configured
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
mode: '0644'
with_items:
- src: "{{ role_path }}/templates/config.toml.j2"
dest: "{{ matrix_static_files_config_path }}/config.toml"
- src: "{{ role_path }}/templates/env.j2"
dest: "{{ matrix_static_files_base_path }}/env"
- src: "{{ role_path }}/templates/labels.j2"
dest: "{{ matrix_static_files_base_path }}/labels"
register: matrix_static_files_config_result
- name: Ensure matrix-static-files files are installed
ansible.builtin.copy:
content: "{{ item.content }}"
dest: "{{ item.dest }}"
mode: '0644'
owner: "{{ matrix_user_name }}"
group: "{{ matrix_group_name }}"
when: item.when | bool
with_items:
- content: "{{ matrix_static_files_file_matrix_client_configuration | to_nice_json }}"
dest: "{{ matrix_static_files_public_well_known_matrix_path }}/client"
when: true
- content: "{{ matrix_static_files_file_matrix_server_configuration | to_nice_json }}"
dest: "{{ matrix_static_files_public_well_known_matrix_path }}/server"
when: "{{ matrix_static_files_file_matrix_server_enabled }}"
- content: "{{ matrix_static_files_file_matrix_support_configuration | to_nice_json }}"
dest: "{{ matrix_static_files_public_well_known_matrix_path }}/support"
when: "{{ matrix_static_files_file_matrix_support_enabled }}"
- content: "{{ matrix_static_files_file_matrix_mautrix_configuration | to_nice_json }}"
dest: "{{ matrix_static_files_public_well_known_matrix_path }}/mautrix"
when: "{{ matrix_static_files_file_matrix_mautrix_enabled }}"
# This one will not be deleted if `matrix_static_files_file_index_html_enabled` flips to `false`.
# See the comment for `matrix_static_files_file_index_html_enabled` to learn why.
- content: "{{ matrix_static_files_file_index_html_template }}"
dest: "{{ matrix_static_files_public_path }}/index.html"
when: "{{ matrix_static_files_file_index_html_enabled }}"
register: matrix_static_files_files_result
- name: Ensure /.well-known/matrix/server file deleted if not enabled
ansible.builtin.file:
path: "{{ matrix_static_files_public_well_known_matrix_path }}/server"
state: absent
when: "not matrix_static_files_file_matrix_server_enabled | bool"
- name: Ensure /.well-known/matrix/support file deleted if not enabled
ansible.builtin.file:
path: "{{ matrix_static_files_public_well_known_matrix_path }}/support"
state: absent
when: "not matrix_static_files_file_matrix_support_enabled | bool"
- name: Ensure /.well-known/matrix/mautrix file deleted if not enabled
ansible.builtin.file:
path: "{{ matrix_static_files_public_well_known_matrix_path }}/mautrix"
state: absent
when: "not matrix_static_files_file_matrix_mautrix_enabled | bool"
- name: Ensure matrix-static-files container image is pulled
community.docker.docker_image_pull:
name: "{{ matrix_static_files_container_image }}"
pull: always
register: matrix_static_files_container_image_pull_result
retries: "{{ devture_playbook_help_container_retries_count }}"
delay: "{{ devture_playbook_help_container_retries_delay }}"
until: matrix_static_files_container_image_pull_result is not failed
- name: Ensure matrix-static-files container network is created
when: matrix_static_files_container_network != 'host'
community.general.docker_network:
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
name: "{{ matrix_static_files_container_network }}"
driver: bridge
driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"
- name: Ensure matrix-static-files systemd service is installed
ansible.builtin.template:
src: "{{ role_path }}/templates/systemd/matrix-static-files.service.j2"
dest: "{{ devture_systemd_docker_base_systemd_path }}/{{ matrix_static_files_identifier }}.service"
mode: '0644'
register: matrix_static_files_systemd_service_result
- name: Determine whether matrix-static-files needs a restart
ansible.builtin.set_fact:
matrix_static_files_restart_necessary: >-
{{
matrix_static_files_config_result.changed | default(false)
or matrix_static_files_files_result.changed | default(false)
or matrix_static_files_systemd_service_result.changed | default(false)
or matrix_static_files_container_image_pull_result.changed | default(false)
}}