--- - name: Element web docker_container: name: 'element' image: 'vectorim/element-web:latest' pull: yes container_default_behavior: no_defaults volumes: - /app published_ports: - "127.0.0.1:{{ ports.element_http }}:80" restart_policy: always register: element_out - set_fact: element_config_volume: "{{ element_out.container.Mounts | selectattr('Destination', 'equalto', '/app') | join }}" - name: Read element config to variable include_vars: file: element_config.yml name: element_config - name: Put element config in place copy: content: "{{ element_config }}" dest: "{{ element_config_volume.Source }}/config.json" - name: Add caddy reverse proxy config blockinfile: path: /etc/caddy/Caddyfile marker: "# {mark} ANSIBLE MANAGED BLOCK element" block: | element.{{ domain }} chat.{{ domain }} { reverse_proxy http://127.0.0.1:{{ ports.element_http }} } validate: 'caddy validate --config %s --adapter caddyfile' backup: yes notify: reload caddy when: reverse_proxy_type == 'caddy'