Enable location sharing in Element (#2276)
* Enable location sharing in Element * Update roles/custom/matrix-client-element/tasks/validate_config.yml Co-authored-by: Slavi Pantaleev <slavi@devture.com> * Update roles/custom/matrix-client-element/tasks/setup_install.yml Co-authored-by: Slavi Pantaleev <slavi@devture.com> * Rename location sharing vars to be consistent with other vars * Rename style.json to map_style.json * Add m.tile_server section to /.well-known/matrix/client Co-authored-by: Slavi Pantaleev <slavi@devture.com>
This commit is contained in:
parent
84c74136ea
commit
77451c6a71
|
@ -24,6 +24,11 @@
|
||||||
},
|
},
|
||||||
"im.vector.riot.jitsi": {
|
"im.vector.riot.jitsi": {
|
||||||
"preferredDomain": {{ matrix_client_element_jitsi_preferredDomain|to_json }}
|
"preferredDomain": {{ matrix_client_element_jitsi_preferredDomain|to_json }}
|
||||||
|
}
|
||||||
|
{% endif %}
|
||||||
|
{% if matrix_client_element_location_sharing_enabled %},
|
||||||
|
"m.tile_server": {
|
||||||
|
"map_style_url": "https://{{ matrix_server_fqn_element }}/map_style.json"
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
,
|
,
|
||||||
|
|
|
@ -135,3 +135,70 @@ matrix_client_element_configuration_extension: "{{ matrix_client_element_configu
|
||||||
# Holds the final Element configuration (a combination of the default and its extension).
|
# Holds the final Element configuration (a combination of the default and its extension).
|
||||||
# You most likely don't need to touch this variable. Instead, see `matrix_client_element_configuration_default`.
|
# You most likely don't need to touch this variable. Instead, see `matrix_client_element_configuration_default`.
|
||||||
matrix_client_element_configuration: "{{ matrix_client_element_configuration_default | combine(matrix_client_element_configuration_extension, recursive=True) }}"
|
matrix_client_element_configuration: "{{ matrix_client_element_configuration_default | combine(matrix_client_element_configuration_extension, recursive=True) }}"
|
||||||
|
|
||||||
|
# Element Location sharing functionality
|
||||||
|
# More info: https://element.io/blog/element-launches-e2ee-location-sharing/
|
||||||
|
# How to host your own map tile server: https://matrix.org/docs/guides/map-tile-server
|
||||||
|
matrix_client_element_location_sharing_enabled: false
|
||||||
|
|
||||||
|
# Default Element location sharing map style configuration template which covers the generic use case.
|
||||||
|
# You can customize it by controlling the various variables inside it.
|
||||||
|
#
|
||||||
|
# For a more advanced customization, you can extend the default (see `matrix_client_element_location_sharing_map_style_extension_json`)
|
||||||
|
# or completely replace this variable with your own template.
|
||||||
|
#
|
||||||
|
# The side-effect of this lookup is that Ansible would even parse the JSON for us, returning a dict.
|
||||||
|
# This is unlike what it does when looking up YAML template files (no automatic parsing there).
|
||||||
|
matrix_client_element_location_sharing_map_style_default: "{{ lookup('template', 'templates/map_style.json.j2') }}"
|
||||||
|
|
||||||
|
# Your custom JSON configuration for Element location sharing map style should go to `matrix_client_element_location_sharing_map_style_extension_json`.
|
||||||
|
# This configuration extends the default starting configuration (`matrix_client_element_location_sharing_map_style_default`).
|
||||||
|
#
|
||||||
|
# You can override individual variables from the default configuration, or introduce new ones.
|
||||||
|
#
|
||||||
|
# If you need something more special, you can take full control by
|
||||||
|
# completely redefining `matrix_client_element_location_sharing_map_style_default`.
|
||||||
|
#
|
||||||
|
# Example configuration override follows:
|
||||||
|
#
|
||||||
|
# matrix_client_element_location_sharing_map_style_extension_json: |
|
||||||
|
# {
|
||||||
|
# "sources": {
|
||||||
|
# "localsource": {
|
||||||
|
# "tileSize": 512
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Example configuration extension follows:
|
||||||
|
#
|
||||||
|
# matrix_client_element_location_sharing_map_style_extension_json: |
|
||||||
|
# {
|
||||||
|
# "sources": {
|
||||||
|
# "anothersource": {
|
||||||
|
# "attribution": "",
|
||||||
|
# "tileSize": 256,
|
||||||
|
# "tiles": ["https://anothertile.example.com/{z}/{x}/{y}.png"],
|
||||||
|
# "type": "raster"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
matrix_client_element_location_sharing_map_style_extension_json: '{}'
|
||||||
|
|
||||||
|
matrix_client_element_location_sharing_map_style_extension: "{{ matrix_client_element_location_sharing_map_style_extension_json | from_json if matrix_client_element_location_sharing_map_style_extension_json | from_json is mapping else {} }}"
|
||||||
|
|
||||||
|
# Holds the final Element location sharing map style configuration (a combination of the default and its extension).
|
||||||
|
# You most likely don't need to touch this variable. Instead, see `matrix_client_element_location_sharing_map_style_default`.
|
||||||
|
matrix_client_element_location_sharing_map_style: "{{ matrix_client_element_location_sharing_map_style_default | combine(matrix_client_element_location_sharing_map_style_extension, recursive=True) }}"
|
||||||
|
|
||||||
|
# Example tile servers configuration
|
||||||
|
# matrix_client_element_location_sharing_map_style_content_sources_localsource_tiles: ["https://tile.example.com/{z}/{x}/{y}.png"]
|
||||||
|
# or
|
||||||
|
# matrix_client_element_location_sharing_map_style_content_sources_localsource_tiles: ["https://s1.example.com/{z}/{x}/{y}.png", "https://s2.example.com/{z}/{x}/{y}.png", "https://s3.example.com/{z}/{x}/{y}.png"]
|
||||||
|
matrix_client_element_location_sharing_map_style_content_sources_localsource_tiles: []
|
||||||
|
|
||||||
|
# Map attribution (optional):
|
||||||
|
# Attribution for OpenStreetMap would be like this:
|
||||||
|
# matrix_client_element_location_sharing_map_style_content_sources_localsource_attribution: "© <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">OpenStreetMap</a> contributors"
|
||||||
|
# Leave blank, if map does not require attribution.
|
||||||
|
matrix_client_element_location_sharing_map_style_content_sources_localsource_attribution: ""
|
||||||
|
|
|
@ -69,6 +69,15 @@
|
||||||
owner: "{{ matrix_user_username }}"
|
owner: "{{ matrix_user_username }}"
|
||||||
group: "{{ matrix_user_groupname }}"
|
group: "{{ matrix_user_groupname }}"
|
||||||
|
|
||||||
|
- 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_username }}"
|
||||||
|
group: "{{ matrix_user_groupname }}"
|
||||||
|
|
||||||
- name: Ensure Element config files installed
|
- name: Ensure Element config files installed
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: "{{ item.src }}"
|
src: "{{ item.src }}"
|
||||||
|
|
|
@ -8,6 +8,14 @@
|
||||||
with_items:
|
with_items:
|
||||||
- "matrix_client_element_default_hs_url"
|
- "matrix_client_element_default_hs_url"
|
||||||
|
|
||||||
|
- name: Fail if Element location sharing enabled, but no tile server defined
|
||||||
|
ansible.builtin.fail:
|
||||||
|
msg: >-
|
||||||
|
You need to define at least one map tile server in matrix_client_element_location_sharing_map_style_content_sources_localsource_tiles list
|
||||||
|
when:
|
||||||
|
- matrix_client_element_location_sharing_enabled | bool
|
||||||
|
- matrix_client_element_location_sharing_map_style_content_sources_localsource_tiles | length == 0
|
||||||
|
|
||||||
- name: (Deprecation) Catch and report riot-web variables
|
- name: (Deprecation) Catch and report riot-web variables
|
||||||
ansible.builtin.fail:
|
ansible.builtin.fail:
|
||||||
msg: >-
|
msg: >-
|
||||||
|
|
|
@ -36,6 +36,9 @@
|
||||||
"jitsi": {
|
"jitsi": {
|
||||||
"preferredDomain": {{ matrix_client_element_jitsi_preferredDomain|to_json }}
|
"preferredDomain": {{ matrix_client_element_jitsi_preferredDomain|to_json }}
|
||||||
},
|
},
|
||||||
|
{% endif %}
|
||||||
|
{% if matrix_client_element_location_sharing_enabled %}
|
||||||
|
"map_style_url": "https://{{ matrix_server_fqn_element }}/map_style.json",
|
||||||
{% endif %}
|
{% endif %}
|
||||||
"branding": {
|
"branding": {
|
||||||
"authFooterLinks": {{ matrix_client_element_branding_authFooterLinks|to_json }},
|
"authFooterLinks": {{ matrix_client_element_branding_authFooterLinks|to_json }},
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"layers": [
|
||||||
|
{
|
||||||
|
"id": "locallayer",
|
||||||
|
"source": "localsource",
|
||||||
|
"type": "raster"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"localsource": {
|
||||||
|
"attribution": {{ matrix_client_element_location_sharing_map_style_content_sources_localsource_attribution|to_json }},
|
||||||
|
"tileSize": 256,
|
||||||
|
"tiles": {{ matrix_client_element_location_sharing_map_style_content_sources_localsource_tiles|to_json }},
|
||||||
|
"type": "raster"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"version": 8
|
||||||
|
}
|
|
@ -26,6 +26,9 @@ ExecStart={{ devture_systemd_docker_base_host_command_docker }} run --rm --name
|
||||||
--mount type=bind,src={{ matrix_client_element_data_path }}/nginx.conf,dst=/etc/nginx/nginx.conf,ro \
|
--mount type=bind,src={{ matrix_client_element_data_path }}/nginx.conf,dst=/etc/nginx/nginx.conf,ro \
|
||||||
--mount type=bind,src={{ matrix_client_element_data_path }}/config.json,dst=/app/config.json,ro \
|
--mount type=bind,src={{ matrix_client_element_data_path }}/config.json,dst=/app/config.json,ro \
|
||||||
--mount type=bind,src={{ matrix_client_element_data_path }}/config.json,dst=/app/config.{{ matrix_server_fqn_element }}.json,ro \
|
--mount type=bind,src={{ matrix_client_element_data_path }}/config.json,dst=/app/config.{{ matrix_server_fqn_element }}.json,ro \
|
||||||
|
{% if matrix_client_element_location_sharing_enabled %}
|
||||||
|
--mount type=bind,src={{ matrix_client_element_data_path }}/map_style.json,dst=/app/map_style.json,ro \
|
||||||
|
{% endif %}
|
||||||
{% if matrix_client_element_embedded_pages_home_path is not none %}
|
{% if matrix_client_element_embedded_pages_home_path is not none %}
|
||||||
--mount type=bind,src={{ matrix_client_element_data_path }}/home.html,dst=/app/home.html,ro \
|
--mount type=bind,src={{ matrix_client_element_data_path }}/home.html,dst=/app/home.html,ro \
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
Loading…
Reference in a new issue