Merge branch 'master' into pub.solar
This commit is contained in:
commit
8d67ccfae0
|
@ -55,3 +55,22 @@ Certain Synapse administration tasks (managing users and rooms, etc.) can be per
|
||||||
## Synapse + OpenID Connect for Single-Sign-On
|
## Synapse + OpenID Connect for Single-Sign-On
|
||||||
|
|
||||||
If you'd like to use OpenID Connect authentication with Synapse, you'll need some additional reverse-proxy configuration (see [our nginx reverse-proxy doc page](configuring-playbook-nginx.md#synapse-openid-connect-for-single-sign-on)).
|
If you'd like to use OpenID Connect authentication with Synapse, you'll need some additional reverse-proxy configuration (see [our nginx reverse-proxy doc page](configuring-playbook-nginx.md#synapse-openid-connect-for-single-sign-on)).
|
||||||
|
|
||||||
|
In case you encounter errors regarding the parsing of the variables, you can try to add `{%raw}` and `{% endraw %}` blocks around them. For example ;
|
||||||
|
|
||||||
|
```
|
||||||
|
- idp_id: keycloak
|
||||||
|
idp_name: "Keycloak"
|
||||||
|
issuer: "https://url.ix/auth/realms/x"
|
||||||
|
client_id: "matrix"
|
||||||
|
client_secret: "{{ vault_synapse_keycloak }}"
|
||||||
|
scopes: ["openid", "profile"]
|
||||||
|
authorization_endpoint: "https://url.ix/auth/realms/x/protocol/openid-connect/auth"
|
||||||
|
token_endpoint: "https://url.ix/auth/realms/x/protocol/openid-connect/token"
|
||||||
|
userinfo_endpoint: "https://url.ix/auth/realms/x/protocol/openid-connect/userinfo"
|
||||||
|
user_mapping_provider:
|
||||||
|
config:
|
||||||
|
display_name_template: "{%raw}{{ user.given_name }}{% endraw %} {%raw}{{ user.family_name }}{% endraw %}"
|
||||||
|
email_template: "{%raw}{{ user.email }}{% endraw %}"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
|
@ -54,10 +54,6 @@
|
||||||
validate_certs: yes
|
validate_certs: yes
|
||||||
tags: use-survey
|
tags: use-survey
|
||||||
|
|
||||||
- name: Run export.sh if this job template is run by the client
|
|
||||||
command: /bin/sh /root/export.sh
|
|
||||||
tags: use-survey
|
|
||||||
|
|
||||||
- name: Include vars in matrix_vars.yml
|
- name: Include vars in matrix_vars.yml
|
||||||
include_vars:
|
include_vars:
|
||||||
file: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/matrix_vars.yml'
|
file: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/matrix_vars.yml'
|
||||||
|
@ -70,8 +66,28 @@
|
||||||
mode: '0660'
|
mode: '0660'
|
||||||
tags: use-survey
|
tags: use-survey
|
||||||
|
|
||||||
- name: Perform the borg backup
|
- name: Run initial backup of /matrix/ and snapshot the database simultaneously
|
||||||
command: borgmatic
|
command: "{{ item }}"
|
||||||
|
with_items:
|
||||||
|
- borgmatic -c /root/.config/borgmatic/config_1.yaml
|
||||||
|
- /bin/sh /usr/local/bin/awx-export-service.sh 1 0
|
||||||
|
register: _create_instances
|
||||||
|
async: 3600 # Maximum runtime in seconds.
|
||||||
|
poll: 0 # Fire and continue (never poll)
|
||||||
|
when: matrix_awx_backup_enabled|bool
|
||||||
|
|
||||||
|
- name: Wait for both of these jobs to finish
|
||||||
|
async_status:
|
||||||
|
jid: "{{ item.ansible_job_id }}"
|
||||||
|
register: _jobs
|
||||||
|
until: _jobs.finished
|
||||||
|
delay: 5 # Check every 5 seconds.
|
||||||
|
retries: 720 # Retry for a full hour.
|
||||||
|
with_items: "{{ _create_instances.results }}"
|
||||||
|
when: matrix_awx_backup_enabled|bool
|
||||||
|
|
||||||
|
- name: Perform borg backup of postgres dump
|
||||||
|
command: borgmatic -c /root/.config/borgmatic/config_2.yaml
|
||||||
when: matrix_awx_backup_enabled|bool
|
when: matrix_awx_backup_enabled|bool
|
||||||
|
|
||||||
- name: Set boolean value to exit playbook
|
- name: Set boolean value to exit playbook
|
||||||
|
|
33
roles/matrix-awx/tasks/export_server.yml
Normal file
33
roles/matrix-awx/tasks/export_server.yml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
|
||||||
|
- name: Run export of /matrix/ and snapshot the database simultaneously
|
||||||
|
command: "{{ item }}"
|
||||||
|
with_items:
|
||||||
|
- /bin/sh /usr/local/bin/awx-export-service.sh 1 0
|
||||||
|
- /bin/sh /usr/local/bin/awx-export-service.sh 0 1
|
||||||
|
register: _create_instances
|
||||||
|
async: 3600 # Maximum runtime in seconds.
|
||||||
|
poll: 0 # Fire and continue (never poll)
|
||||||
|
|
||||||
|
- name: Wait for both of these jobs to finish
|
||||||
|
async_status:
|
||||||
|
jid: "{{ item.ansible_job_id }}"
|
||||||
|
register: _jobs
|
||||||
|
until: _jobs.finished
|
||||||
|
delay: 5 # Check every 5 seconds.
|
||||||
|
retries: 720 # Retry for a full hour.
|
||||||
|
with_items: "{{ _create_instances.results }}"
|
||||||
|
|
||||||
|
- name: Schedule deletion of the export in 24 hours
|
||||||
|
at:
|
||||||
|
command: rm /chroot/export/matrix*
|
||||||
|
count: 1
|
||||||
|
units: days
|
||||||
|
unique: yes
|
||||||
|
|
||||||
|
- name: Set boolean value to exit playbook
|
||||||
|
set_fact:
|
||||||
|
end_playbook: true
|
||||||
|
|
||||||
|
- name: End playbook if this task list is called.
|
||||||
|
meta: end_play
|
||||||
|
when: end_playbook is defined and end_playbook|bool
|
|
@ -1,15 +1,4 @@
|
||||||
|
|
||||||
- name: Ensure /matrix/awx is empty
|
|
||||||
shell: rm -r /matrix/awx/*
|
|
||||||
ignore_errors: yes
|
|
||||||
|
|
||||||
- name: Ensure /matrix/synapse is empty
|
|
||||||
shell: rm -r /matrix/synapse/*
|
|
||||||
ignore_errors: yes
|
|
||||||
|
|
||||||
- name: Extract from /chroot/export
|
|
||||||
shell: tar -xvzf /chroot/export/matrix.tar.gz -C /matrix/
|
|
||||||
|
|
||||||
- name: Ensure correct ownership of /matrix/awx
|
- name: Ensure correct ownership of /matrix/awx
|
||||||
shell: chown -R matrix:matrix /matrix/awx
|
shell: chown -R matrix:matrix /matrix/awx
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,15 @@
|
||||||
tags:
|
tags:
|
||||||
- backup-server
|
- backup-server
|
||||||
|
|
||||||
|
# Perform a export of the server
|
||||||
|
- include_tasks:
|
||||||
|
file: "export_server.yml"
|
||||||
|
apply:
|
||||||
|
tags: export-server
|
||||||
|
when: run_setup|bool and matrix_awx_enabled|bool
|
||||||
|
tags:
|
||||||
|
- export-server
|
||||||
|
|
||||||
# Create a user account if called
|
# Create a user account if called
|
||||||
- include_tasks:
|
- include_tasks:
|
||||||
file: "create_user.yml"
|
file: "create_user.yml"
|
||||||
|
|
|
@ -7,7 +7,7 @@ matrix_appservice_irc_container_self_build: false
|
||||||
matrix_appservice_irc_docker_repo: "https://github.com/matrix-org/matrix-appservice-irc.git"
|
matrix_appservice_irc_docker_repo: "https://github.com/matrix-org/matrix-appservice-irc.git"
|
||||||
matrix_appservice_irc_docker_src_files_path: "{{ matrix_base_data_path }}/appservice-irc/docker-src"
|
matrix_appservice_irc_docker_src_files_path: "{{ matrix_base_data_path }}/appservice-irc/docker-src"
|
||||||
|
|
||||||
matrix_appservice_irc_version: release-0.26.0
|
matrix_appservice_irc_version: release-0.26.1
|
||||||
matrix_appservice_irc_docker_image: "{{ matrix_container_global_registry_prefix }}matrixdotorg/matrix-appservice-irc:{{ matrix_appservice_irc_version }}"
|
matrix_appservice_irc_docker_image: "{{ matrix_container_global_registry_prefix }}matrixdotorg/matrix-appservice-irc:{{ matrix_appservice_irc_version }}"
|
||||||
matrix_appservice_irc_docker_image_force_pull: "{{ matrix_appservice_irc_docker_image.endswith(':latest') }}"
|
matrix_appservice_irc_docker_image_force_pull: "{{ matrix_appservice_irc_docker_image.endswith(':latest') }}"
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_appservice_irc_container_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_appservice_irc_container_self_build and matrix_appservice_irc_enabled"
|
||||||
|
|
||||||
# If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist.
|
# If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist.
|
||||||
# We don't want to fail in such cases.
|
# We don't want to fail in such cases.
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_appservice_slack_container_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_appservice_slack_container_self_build and matrix_appservice_slack_enabled"
|
||||||
|
|
||||||
# If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist.
|
# If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist.
|
||||||
# We don't want to fail in such cases.
|
# We don't want to fail in such cases.
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mautrix_facebook_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mautrix_facebook_container_image_self_build and matrix_mautrix_facebook_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mautrix-facebook.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mautrix-facebook.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mautrix_hangouts_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mautrix_hangouts_container_image_self_build and matrix_mautrix_hangouts_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mautrix-hangouts.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mautrix-hangouts.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mautrix_instagram_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mautrix_instagram_container_image_self_build and matrix_mautrix_instagram_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mautrix-instagram.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mautrix-instagram.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mautrix_telegram_container_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mautrix_telegram_container_self_build and matrix_mautrix_telegram_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mautrix-telegram.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mautrix-telegram.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_discord_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_discord_container_image_self_build and matrix_mx_puppet_discord_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-discord.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-discord.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_groupme_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_groupme_container_image_self_build and matrix_mx_puppet_groupme_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-groupme.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-groupme.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_instagram_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_instagram_container_image_self_build and matrix_mx_puppet_instagram_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-instagram.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-instagram.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_skype_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_skype_container_image_self_build and matrix_mx_puppet_skype_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-skype.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-skype.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_slack_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_slack_container_image_self_build and matrix_mx_puppet_slack_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-slack.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-slack.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_steam_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_steam_container_image_self_build and matrix_mx_puppet_steam_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-steam.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-steam.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_twitter_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mx_puppet_twitter_container_image_self_build and matrix_mx_puppet_twitter_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-twitter.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mx-puppet-twitter.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@ matrix_client_element_enabled: true
|
||||||
matrix_client_element_container_image_self_build: false
|
matrix_client_element_container_image_self_build: false
|
||||||
matrix_client_element_container_image_self_build_repo: "https://github.com/vector-im/riot-web.git"
|
matrix_client_element_container_image_self_build_repo: "https://github.com/vector-im/riot-web.git"
|
||||||
|
|
||||||
matrix_client_element_version: v1.7.29
|
matrix_client_element_version: v1.7.30
|
||||||
matrix_client_element_docker_image: "{{ matrix_client_element_docker_image_name_prefix }}vectorim/element-web:{{ matrix_client_element_version }}"
|
matrix_client_element_docker_image: "{{ matrix_client_element_docker_image_name_prefix }}vectorim/element-web:{{ matrix_client_element_version }}"
|
||||||
matrix_client_element_docker_image_name_prefix: "{{ 'localhost/' if matrix_client_element_container_image_self_build else matrix_container_global_registry_prefix }}"
|
matrix_client_element_docker_image_name_prefix: "{{ 'localhost/' if matrix_client_element_container_image_self_build else matrix_container_global_registry_prefix }}"
|
||||||
matrix_client_element_docker_image_force_pull: "{{ matrix_client_element_docker_image.endswith(':latest') }}"
|
matrix_client_element_docker_image_force_pull: "{{ matrix_client_element_docker_image.endswith(':latest') }}"
|
||||||
|
|
|
@ -7,4 +7,4 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_client_element_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_client_element_container_image_self_build and matrix_client_element_enabled"
|
||||||
|
|
|
@ -5,7 +5,7 @@ matrix_client_hydrogen_enabled: true
|
||||||
matrix_client_hydrogen_container_image_self_build: true
|
matrix_client_hydrogen_container_image_self_build: true
|
||||||
matrix_client_hydrogen_container_image_self_build_repo: "https://github.com/vector-im/hydrogen-web.git"
|
matrix_client_hydrogen_container_image_self_build_repo: "https://github.com/vector-im/hydrogen-web.git"
|
||||||
|
|
||||||
matrix_client_hydrogen_version: v0.1.56
|
matrix_client_hydrogen_version: v0.1.57
|
||||||
matrix_client_hydrogen_docker_image: "{{ matrix_client_hydrogen_docker_image_name_prefix }}vectorim/hydrogen-web:{{ matrix_client_hydrogen_version }}"
|
matrix_client_hydrogen_docker_image: "{{ matrix_client_hydrogen_docker_image_name_prefix }}vectorim/hydrogen-web:{{ matrix_client_hydrogen_version }}"
|
||||||
matrix_client_hydrogen_docker_image_name_prefix: "{{ 'localhost/' if matrix_client_hydrogen_container_image_self_build }}"
|
matrix_client_hydrogen_docker_image_name_prefix: "{{ 'localhost/' if matrix_client_hydrogen_container_image_self_build }}"
|
||||||
matrix_client_hydrogen_docker_image_force_pull: "{{ matrix_client_hydrogen_docker_image.endswith(':latest') }}"
|
matrix_client_hydrogen_docker_image_force_pull: "{{ matrix_client_hydrogen_docker_image.endswith(':latest') }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Hydrogen image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Hydrogen image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_client_hydrogen_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_client_hydrogen_container_image_self_build and matrix_client_hydrogen_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-client-hydrogen.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-client-hydrogen.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_corporal_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_corporal_container_image_self_build and matrix_corporal_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-corporal.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-corporal.service'] }}"
|
||||||
|
|
|
@ -2,7 +2,7 @@ matrix_coturn_enabled: true
|
||||||
|
|
||||||
matrix_coturn_container_image_self_build: false
|
matrix_coturn_container_image_self_build: false
|
||||||
matrix_coturn_container_image_self_build_repo: "https://github.com/coturn/coturn"
|
matrix_coturn_container_image_self_build_repo: "https://github.com/coturn/coturn"
|
||||||
matrix_coturn_container_image_self_build_repo_version: "docker/{{ matrix_coturn_version }}-r0"
|
matrix_coturn_container_image_self_build_repo_version: "docker/{{ matrix_coturn_version }}-r1"
|
||||||
matrix_coturn_container_image_self_build_repo_dockerfile_path: "docker/coturn/alpine/Dockerfile"
|
matrix_coturn_container_image_self_build_repo_dockerfile_path: "docker/coturn/alpine/Dockerfile"
|
||||||
|
|
||||||
matrix_coturn_version: 4.5.2
|
matrix_coturn_version: 4.5.2
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_coturn_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_coturn_container_image_self_build and matrix_coturn_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-coturn.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-coturn.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_dynamic_dns_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_dynamic_dns_container_image_self_build and matrix_dynamic_dns_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-dynamic-dns.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-dynamic-dns.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
matrix_grafana_enabled: false
|
matrix_grafana_enabled: false
|
||||||
|
|
||||||
matrix_grafana_version: 7.5.7
|
matrix_grafana_version: 8.0.2
|
||||||
matrix_grafana_docker_image: "{{ matrix_container_global_registry_prefix }}grafana/grafana:{{ matrix_grafana_version }}"
|
matrix_grafana_docker_image: "{{ matrix_container_global_registry_prefix }}grafana/grafana:{{ matrix_grafana_version }}"
|
||||||
matrix_grafana_docker_image_force_pull: "{{ matrix_grafana_docker_image.endswith(':latest') }}"
|
matrix_grafana_docker_image_force_pull: "{{ matrix_grafana_docker_image.endswith(':latest') }}"
|
||||||
|
|
||||||
|
@ -38,11 +38,11 @@ matrix_grafana_default_admin_password: admin
|
||||||
matrix_grafana_content_security_policy: true
|
matrix_grafana_content_security_policy: true
|
||||||
|
|
||||||
# specify content security policy template to customized template
|
# specify content security policy template to customized template
|
||||||
# added 'unsafe-inline' (ignored by browsers supporting nonces/hashes) to be backward compatible with older browsers.
|
|
||||||
# added https: and http: url schemes (ignored by browsers supporting 'strict-dynamic') to be backward compatible with older browsers.
|
# added https: and http: url schemes (ignored by browsers supporting 'strict-dynamic') to be backward compatible with older browsers.
|
||||||
# [Content Security Policy Browser Test] (https://content-security-policy.com/browser-test/)
|
# [Content Security Policy Browser Test] (https://content-security-policy.com/browser-test/)
|
||||||
# [Content Security Policy Reference](https://content-security-policy.com/script-src/)
|
# [Content Security Policy Reference](https://content-security-policy.com/script-src/)
|
||||||
matrix_grafana_content_security_policy_customized: true
|
matrix_grafana_content_security_policy_customized: false
|
||||||
|
matrix_grafana_content_security_policy_template: "script-src 'self' 'unsafe-eval' 'unsafe-inline' http: https: 'strict-dynamic' $NONCE;object-src 'none';font-src 'self';style-src 'self' 'unsafe-inline' blob:;img-src * data:;base-uri 'self';connect-src 'self' grafana.com ws://$ROOT_PATH wss://$ROOT_PATH;manifest-src 'self';media-src 'none';form-action 'self';"
|
||||||
|
|
||||||
# A list of extra arguments to pass to the container
|
# A list of extra arguments to pass to the container
|
||||||
matrix_grafana_container_extra_arguments: []
|
matrix_grafana_container_extra_arguments: []
|
||||||
|
|
|
@ -13,7 +13,7 @@ content_security_policy = "{{ matrix_grafana_content_security_policy }}"
|
||||||
|
|
||||||
# specify content security policy template to customized template
|
# specify content security policy template to customized template
|
||||||
{% if matrix_grafana_content_security_policy_customized %}
|
{% if matrix_grafana_content_security_policy_customized %}
|
||||||
content_security_policy_template = """script-src http: https: 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' $NONCE;object-src 'none';font-src 'self';style-src 'self' 'unsafe-inline';img-src 'self' data:;base-uri 'self';connect-src 'self' grafana.com;manifest-src 'self';media-src 'none';form-action 'self';"""
|
content_security_policy_template = """{{ matrix_grafana_content_security_policy_template }}"""
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
[auth.anonymous]
|
[auth.anonymous]
|
||||||
|
|
|
@ -39,6 +39,7 @@ matrix_jitsi_xmpp_bosh_url_base: http://{{ matrix_jitsi_xmpp_server }}:5280
|
||||||
matrix_jitsi_xmpp_guest_domain: guest.meet.jitsi
|
matrix_jitsi_xmpp_guest_domain: guest.meet.jitsi
|
||||||
matrix_jitsi_xmpp_muc_domain: muc.meet.jitsi
|
matrix_jitsi_xmpp_muc_domain: muc.meet.jitsi
|
||||||
matrix_jitsi_xmpp_internal_muc_domain: internal-muc.meet.jitsi
|
matrix_jitsi_xmpp_internal_muc_domain: internal-muc.meet.jitsi
|
||||||
|
matrix_jitsi_xmpp_modules: ''
|
||||||
|
|
||||||
matrix_jitsi_recorder_domain: recorder.meet.jitsi
|
matrix_jitsi_recorder_domain: recorder.meet.jitsi
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ XMPP_GUEST_DOMAIN={{ matrix_jitsi_xmpp_guest_domain }}
|
||||||
XMPP_MUC_DOMAIN={{ matrix_jitsi_xmpp_muc_domain }}
|
XMPP_MUC_DOMAIN={{ matrix_jitsi_xmpp_muc_domain }}
|
||||||
XMPP_INTERNAL_MUC_DOMAIN={{ matrix_jitsi_xmpp_internal_muc_domain }}
|
XMPP_INTERNAL_MUC_DOMAIN={{ matrix_jitsi_xmpp_internal_muc_domain }}
|
||||||
|
|
||||||
XMPP_MODULES=
|
XMPP_MODULES={{ matrix_jitsi_xmpp_modules }}
|
||||||
XMPP_MUC_MODULES=
|
XMPP_MUC_MODULES=
|
||||||
XMPP_INTERNAL_MUC_MODULES=
|
XMPP_INTERNAL_MUC_MODULES=
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_ma1sd_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_ma1sd_container_image_self_build and matrix_ma1sd_enabled|bool"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-ma1sd.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-ma1sd.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mailer_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_mailer_container_image_self_build and matrix_mailer_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mailer.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-mailer.service'] }}"
|
||||||
|
|
|
@ -404,7 +404,7 @@ matrix_ssl_additional_domains_to_obtain_certificates_for: []
|
||||||
|
|
||||||
# Controls whether to obtain production or staging certificates from Let's Encrypt.
|
# Controls whether to obtain production or staging certificates from Let's Encrypt.
|
||||||
matrix_ssl_lets_encrypt_staging: false
|
matrix_ssl_lets_encrypt_staging: false
|
||||||
matrix_ssl_lets_encrypt_certbot_docker_image: "{{ matrix_container_global_registry_prefix }}certbot/certbot:{{ matrix_ssl_architecture }}-v1.14.0"
|
matrix_ssl_lets_encrypt_certbot_docker_image: "{{ matrix_container_global_registry_prefix }}certbot/certbot:{{ matrix_ssl_architecture }}-v1.16.0"
|
||||||
matrix_ssl_lets_encrypt_certbot_docker_image_force_pull: "{{ matrix_ssl_lets_encrypt_certbot_docker_image.endswith(':latest') }}"
|
matrix_ssl_lets_encrypt_certbot_docker_image_force_pull: "{{ matrix_ssl_lets_encrypt_certbot_docker_image.endswith(':latest') }}"
|
||||||
matrix_ssl_lets_encrypt_certbot_standalone_http_port: 2402
|
matrix_ssl_lets_encrypt_certbot_standalone_http_port: 2402
|
||||||
matrix_ssl_lets_encrypt_support_email: ~
|
matrix_ssl_lets_encrypt_support_email: ~
|
||||||
|
|
|
@ -5,7 +5,7 @@ matrix_redis_connection_password: ""
|
||||||
matrix_redis_base_path: "{{ matrix_base_data_path }}/redis"
|
matrix_redis_base_path: "{{ matrix_base_data_path }}/redis"
|
||||||
matrix_redis_data_path: "{{ matrix_redis_base_path }}/data"
|
matrix_redis_data_path: "{{ matrix_redis_base_path }}/data"
|
||||||
|
|
||||||
matrix_redis_version: 6.0.10-alpine
|
matrix_redis_version: 6.2.4-alpine
|
||||||
matrix_redis_docker_image_v6: "{{ matrix_container_global_registry_prefix }}redis:{{ matrix_redis_version }}"
|
matrix_redis_docker_image_v6: "{{ matrix_container_global_registry_prefix }}redis:{{ matrix_redis_version }}"
|
||||||
matrix_redis_docker_image_latest: "{{ matrix_redis_docker_image_v6 }}"
|
matrix_redis_docker_image_latest: "{{ matrix_redis_docker_image_v6 }}"
|
||||||
matrix_redis_docker_image_to_use: '{{ matrix_redis_docker_image_latest }}'
|
matrix_redis_docker_image_to_use: '{{ matrix_redis_docker_image_latest }}'
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_registration_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_registration_container_image_self_build and matrix_registration_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-registration.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-registration.service'] }}"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_synapse_admin_container_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_synapse_admin_container_self_build and matrix_synapse_admin_enabled"
|
||||||
|
|
||||||
- set_fact:
|
- set_fact:
|
||||||
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-synapse-admin.service'] }}"
|
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-synapse-admin.service'] }}"
|
||||||
|
|
|
@ -15,8 +15,8 @@ matrix_synapse_docker_image_name_prefix: "{{ 'localhost/' if matrix_synapse_cont
|
||||||
# amd64 gets released first.
|
# amd64 gets released first.
|
||||||
# arm32 relies on self-building, so the same version can be built immediately.
|
# arm32 relies on self-building, so the same version can be built immediately.
|
||||||
# arm64 users need to wait for a prebuilt image to become available.
|
# arm64 users need to wait for a prebuilt image to become available.
|
||||||
matrix_synapse_version: v1.35.1
|
matrix_synapse_version: v1.36.0
|
||||||
matrix_synapse_version_arm64: v1.35.1
|
matrix_synapse_version_arm64: v1.36.0
|
||||||
matrix_synapse_docker_image_tag: "{{ matrix_synapse_version if matrix_architecture in ['arm32', 'amd64'] else matrix_synapse_version_arm64 }}"
|
matrix_synapse_docker_image_tag: "{{ matrix_synapse_version if matrix_architecture in ['arm32', 'amd64'] else matrix_synapse_version_arm64 }}"
|
||||||
matrix_synapse_docker_image_force_pull: "{{ matrix_synapse_docker_image.endswith(':latest') }}"
|
matrix_synapse_docker_image_force_pull: "{{ matrix_synapse_docker_image.endswith(':latest') }}"
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: Fail if trying to self-build on Ansible < 2.8
|
- name: Fail if trying to self-build on Ansible < 2.8
|
||||||
fail:
|
fail:
|
||||||
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
msg: "To self-build the Element image, you should use Ansible 2.8 or higher. See docs/ansible.md"
|
||||||
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_synapse_container_image_self_build"
|
when: "ansible_version.major == 2 and ansible_version.minor < 8 and matrix_synapse_container_image_self_build and matrix_synapse_enabled"
|
||||||
|
|
||||||
# Unless `matrix_synapse_workers_enabled_list` is explicitly defined,
|
# Unless `matrix_synapse_workers_enabled_list` is explicitly defined,
|
||||||
# we'll generate it dynamically.
|
# we'll generate it dynamically.
|
||||||
|
|
|
@ -2977,19 +2977,4 @@ redis:
|
||||||
password: {{ matrix_synapse_redis_password }}
|
password: {{ matrix_synapse_redis_password }}
|
||||||
|
|
||||||
|
|
||||||
# Enable experimental features in Synapse.
|
|
||||||
#
|
|
||||||
# Experimental features might break or be removed without a deprecation
|
|
||||||
# period.
|
|
||||||
#
|
|
||||||
experimental_features:
|
|
||||||
# Support for Spaces (MSC1772), it enables the following:
|
|
||||||
#
|
|
||||||
# * The Spaces Summary API (MSC2946).
|
|
||||||
# * Restricting room membership based on space membership (MSC3083).
|
|
||||||
#
|
|
||||||
# Uncomment to disable support for Spaces.
|
|
||||||
#spaces_enabled: false
|
|
||||||
|
|
||||||
|
|
||||||
# vim:ft=yaml
|
# vim:ft=yaml
|
||||||
|
|
|
@ -51,6 +51,9 @@ matrix_synapse_workers_generic_worker_endpoints:
|
||||||
- ^/_matrix/client/(api/v1|r0|unstable)/joined_groups$
|
- ^/_matrix/client/(api/v1|r0|unstable)/joined_groups$
|
||||||
- ^/_matrix/client/(api/v1|r0|unstable)/publicised_groups$
|
- ^/_matrix/client/(api/v1|r0|unstable)/publicised_groups$
|
||||||
- ^/_matrix/client/(api/v1|r0|unstable)/publicised_groups/
|
- ^/_matrix/client/(api/v1|r0|unstable)/publicised_groups/
|
||||||
|
- ^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/event/
|
||||||
|
- ^/_matrix/client/(api/v1|r0|unstable)/joined_rooms$
|
||||||
|
- ^/_matrix/client/(api/v1|r0|unstable)/search$
|
||||||
|
|
||||||
# Registration/login requests
|
# Registration/login requests
|
||||||
- ^/_matrix/client/(api/v1|r0|unstable)/login$
|
- ^/_matrix/client/(api/v1|r0|unstable)/login$
|
||||||
|
|
Loading…
Reference in a new issue