| @@ -1,3 +1,31 @@ | |||
| # 2019-07-08 | |||
| ## Synapse Maintenance docs and synapse-janitor support are available | |||
| The playbook can now help you with Synapse's maintenance. | |||
| There's a new documentation page about [Synapse maintenance](./docs/maintenance-synapse.md) and another section on [Postgres vacuuming](./docs/maintenance-postgres.md#vacuuming-postgresql). | |||
| Among other things, if your Postgres database has grown significantly over time, you may wish to [ask the playbook to purge unused data with synapse-janitor](./docs/maintenance-synapse.md#purging-unused-data-with-synapse-janitor) for you. | |||
| ## (BC Break) Rename run control variables | |||
| Some internal playbook control variables have been renamed. | |||
| This change **only affects people who run this playbook's roles from another playbook**. | |||
| If you're using this playbook as-is, you're not affected and don't need to do anything. | |||
| The following variables have been renamed: | |||
| - from `run_import_postgres` to `run_postgres_import` | |||
| - from `run_import_sqlite_db` to `run_postgres_import_sqlite_db` | |||
| - from `run_upgrade_postgres` to `run_postgres_upgrade` | |||
| - from `run_import_media_store` to `run_synapse_import_media_store` | |||
| - from `run_register_user` to `run_synapse_register_user` | |||
| - from `run_update_user_password` to `run_synapse_update_user_password` | |||
| # 2019-07-04 | |||
| ## Synapse no longer logs to text files | |||
| @@ -20,6 +20,8 @@ | |||
| - [Maintenance / upgrading services](maintenance-upgrading-services.md) | |||
| - [Maintenance / Synapse](maintenance-synapse.md) | |||
| - [Maintenance / PostgreSQL](maintenance-postgres.md) | |||
| - [Maintenance and Troubleshooting](maintenance-and-troubleshooting.md) | |||
| @@ -28,6 +28,8 @@ matrix_mailer_relay_auth_username: "another.sender@example.com" | |||
| matrix_mailer_relay_auth_password: "some-password" | |||
| ``` | |||
| **Note**: only the secure submission protocol (using `STARTTLS`, usually on port `587`) is supported. **SMTPS** (encrypted SMTP, usually on port `465`) **is not supported**. | |||
| ## Troubleshooting | |||
| @@ -6,6 +6,8 @@ Table of contents: | |||
| - [Getting a database terminal](#getting-a-database-terminal), for when you wish to execute SQL queries | |||
| - [Vacuuming PostgreSQL](#vacuuming-postgresql), for when you wish to run a Postgres [VACUUM](https://www.postgresql.org/docs/current/sql-vacuum.html) (optimizing disk space) | |||
| - [Backing up PostgreSQL](#backing-up-postgresql), for when you wish to make a backup | |||
| - [Upgrading PostgreSQL](#upgrading-postgresql), for upgrading to new major versions of PostgreSQL. Such **manual upgrades are sometimes required**. | |||
| @@ -18,6 +20,19 @@ You can use the `/usr/local/bin/matrix-postgres-cli` tool to get interactive ter | |||
| If you are using an [external Postgres server](configuring-playbook-external-postgres.md), the above tool will not be available. | |||
| ## Vacuuming PostgreSQL | |||
| To perform a `FULL` Postgres [VACUUM](https://www.postgresql.org/docs/current/sql-vacuum.html), run the playbook with `--tags=run-postgres-vacuum`. | |||
| Example: | |||
| ```bash | |||
| ansible-playbook -i inventory/hosts setup.yml --tags=run-postgres-vacuum,start | |||
| ``` | |||
| **Note**: this will automatically stop Synapse temporarily and restart it later. You'll also need plenty of available disk space in your Postgres data directory (usually `/matrix/postgres/data`). | |||
| ## Backing up PostgreSQL | |||
| To make a back up of the current PostgreSQL database, make sure it's running and then execute a command like this on the server: | |||
| @@ -0,0 +1,72 @@ | |||
| # Synapse maintenance | |||
| This document shows you how to perform various maintenance tasks related to the Synapse chat server. | |||
| Table of contents: | |||
| - [Purging unused data with synapse-janitor](#purging-unused-data-with-synapse-janitor), for when you wish to delete unused data from the Synapse database | |||
| - [Purging old data with the Purge History API](#purging-old-data-with-the-purge-history-api), for when you wish to delete in-use (but old) data from the Synapse database | |||
| - [Compressing state with rust-synapse-compress-state](#compressing-state-with-rust-synapse-compress-state), for when you wish to compress some Synapse state tables using the [rust-synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state) tool | |||
| ## Purging unused data with synapse-janitor | |||
| When you **leave** and **forget** a room, Synapse can clean up its data, but currently doesn't. | |||
| This **unused and unreachable data** remains in your database forever. | |||
| There are external tools (like [synapse-janitor](https://github.com/xwiki-labs/synapse_scripts)), which are meant to solve this problem. | |||
| To ask the playbook to run synapse-janitor, execute: | |||
| ```bash | |||
| ansible-playbook -i inventory/hosts setup.yml --tags=run-postgres-synapse-janitor,start | |||
| ``` | |||
| **Note**: this will automatically stop Synapse temporarily and restart it later. | |||
| ### Vacuuming Postgres | |||
| Running synapse-janitor potentially deletes a lot of data from the Postgres database. | |||
| However, disk space only ever gets released after a [`FULL` Postgres `VACUUM`](./maintenance-postgres.md#vacuuming-postgresql). | |||
| It's easiest if you ask the playbook to run both synapse-janitor and a `VACUUM FULL` in one call: | |||
| ```bash | |||
| ansible-playbook -i inventory/hosts setup.yml --tags=run-postgres-synapse-janitor,run-postgres-vacuum,start | |||
| ``` | |||
| **Note**: this will automatically stop Synapse temporarily and restart it later. You'll also need plenty of available disk space in your Postgres data directory (usually `/matrix/postgres/data`). | |||
| ## Purging old data with the Purge History API | |||
| If [purging unused and unreachable data](#purging-unused-data-with-synapse-janitor) is not enough for you, you can start deleting in-use (but old) data. | |||
| **This is destructive** (especially for non-federated rooms), because it means **people will no longer have access to history past a certain point**. | |||
| Synapse provides a [Purge History API](https://github.com/matrix-org/synapse/blob/master/docs/admin_api/purge_history_api.rst) that you can use to purge on a per-room basis. | |||
| To make use of this API, **you'll need an admin access token** first. You can find your access token in the setting of some clients (like riot-web). | |||
| Alternatively, you can log in and obtain a new access token like this: | |||
| ``` | |||
| curl \ | |||
| --data '{"identifier": {"type": "m.id.user", "user": "YOUR_MATRIX_USERNAME" }, "password": "YOUR_MATRIX_PASSWORD", "type": "m.login.password", "device_id": "Synapse-Purge-History-API"}' \ | |||
| https://matrix.DOMAIN/_matrix/client/r0/login | |||
| ``` | |||
| Follow the [Purge History API](https://github.com/matrix-org/synapse/blob/master/docs/admin_api/purge_history_api.rst) documentation page for the actual purging instructions. | |||
| Don't forget that disk space only ever gets released after a [`FULL` Postgres `VACUUM`](./maintenance-postgres.md#vacuuming-postgresql) - something the playbook can help you with. | |||
| ## Compressing state with rust-synapse-compress-state | |||
| [rust-synapse-compress-state](https://github.com/matrix-org/rust-synapse-compress-state) can be used to optimize some `_state` tables used by Synapse. | |||
| Unfortunately, at this time the playbook can't help you run this **experimental tool**. | |||
| Since it's also experimental, you may wish to stay away from it, or at least [make Postgres backups](./maintenance-postgres.md#backing-up-postgresql) first. | |||
| @@ -6,7 +6,7 @@ | |||
| - [Python](https://www.python.org/) being installed on the server. Most distributions install Python by default, but some don't (e.g. Ubuntu 18.04) and require manual installation (something like `apt-get install python`). | |||
| - a `cron`-like tool installed on the server such as `cron` or `anacron` to automatically schedule the Let's Encrypt SSL certificates. *This can be ignored if you use your own SSL certificates.* | |||
| - a `cron`-like tool installed on the server such as `cron` or `anacron` to automatically schedule the Let's Encrypt SSL certificates's renewal. *This can be ignored if you use your own SSL certificates.* | |||
| - the [Ansible](http://ansible.com/) program being installed on your own computer. It's used to run this playbook and configures your server for you. Take a look at [our guide about Ansible](ansible.md) for more information, as well as [version requirements](ansible.md#supported-ansible-versions) and alternative ways to run Ansible. | |||
| @@ -43,13 +43,15 @@ matrix_docker_network: "matrix" | |||
| matrix_well_known_matrix_server_enabled: true | |||
| # Variables to Control which parts of our roles run. | |||
| run_postgres_import: true | |||
| run_postgres_upgrade: true | |||
| run_postgres_import_sqlite_db: true | |||
| run_postgres_synapse_janitor: true | |||
| run_postgres_vacuum: true | |||
| run_synapse_register_user: true | |||
| run_synapse_update_user_password: true | |||
| run_synapse_import_media_store: true | |||
| run_setup: true | |||
| run_import_postgres: true | |||
| run_upgrade_postgres: true | |||
| run_self_check: true | |||
| run_start: true | |||
| run_stop: true | |||
| run_register_user: true | |||
| run_update_user_password: true | |||
| run_import_sqlite_db: true | |||
| run_import_media_store: true | |||
| run_self_check: true | |||
| @@ -69,7 +69,7 @@ matrix_appservice_discord_configuration_yaml: | | |||
| disableJoinLeaveNotifications: false | |||
| # Authentication configuration for the discord bot. | |||
| auth: | |||
| clientID: {{ matrix_appservice_discord_client_id }} | |||
| clientID: {{ matrix_appservice_discord_client_id|string }} | |||
| botToken: {{ matrix_appservice_discord_bot_token }} | |||
| logging: | |||
| # What level should the logger output to the console at. | |||
| @@ -59,8 +59,19 @@ | |||
| - name: Generate Appservice IRC passkey if it doesn't exist | |||
| shell: /usr/bin/openssl genpkey -out {{ matrix_appservice_irc_data_path }}/passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048 | |||
| become: true | |||
| become_user: "{{ matrix_user_username }}" | |||
| when: "not irc_passkey_file.stat.exists" | |||
| # In the past, we used to generate the passkey.pem file with root, so permissions may not be okay. | |||
| # Fix it. | |||
| - name: (Migration) Ensure Appservice IRC passkey permissions are okay | |||
| file: | |||
| path: "{{ matrix_appservice_irc_data_path }}/passkey.pem" | |||
| mode: 0644 | |||
| owner: "{{ matrix_user_username }}" | |||
| group: "{{ matrix_user_username }}" | |||
| # Ideally, we'd like to generate the final registration.yaml file by ourselves. | |||
| # | |||
| # However, the IRC bridge supports multiple servers, which leads to multiple | |||
| @@ -3,7 +3,7 @@ | |||
| matrix_mautrix_telegram_enabled: true | |||
| matrix_mautrix_telegram_docker_image: "tulir/mautrix-telegram:v0.5.2" | |||
| matrix_mautrix_telegram_docker_image: "tulir/mautrix-telegram:v0.6.0" | |||
| matrix_mautrix_telegram_docker_image_force_pull: "{{ matrix_mautrix_telegram_docker_image.endswith(':latest') }}" | |||
| matrix_mautrix_telegram_base_path: "{{ matrix_base_data_path }}/mautrix-telegram" | |||
| @@ -196,6 +196,8 @@ matrix_mautrix_telegram_configuration_yaml: | | |||
| inline_images: false | |||
| # Maximum size of image in megabytes before sending to Telegram as a document. | |||
| image_as_file_size: 10 | |||
| # Maximum size of Telegram documents in megabytes to bridge. | |||
| max_document_size: 100 | |||
| # Whether to bridge Telegram bot messages as m.notices or m.texts. | |||
| bot_messages_as_notices: true | |||
| @@ -295,6 +297,40 @@ matrix_mautrix_telegram_configuration_yaml: | | |||
| api_hash: {{ matrix_mautrix_telegram_api_hash }} | |||
| # (Optional) Create your own bot at https://t.me/BotFather | |||
| bot_token: disabled | |||
| # Telethon connection options. | |||
| connection: | |||
| # The timeout in seconds to be used when connecting. | |||
| timeout: 120 | |||
| # How many times the reconnection should retry, either on the initial connection or when | |||
| # Telegram disconnects us. May be set to a negative or null value for infinite retries, but | |||
| # this is not recommended, since the program can get stuck in an infinite loop. | |||
| retries: 5 | |||
| # The delay in seconds to sleep between automatic reconnections. | |||
| retry_delay: 1 | |||
| # The threshold below which the library should automatically sleep on flood wait errors | |||
| # (inclusive). For instance, if a FloodWaitError for 17s occurs and flood_sleep_threshold | |||
| # is 20s, the library will sleep automatically. If the error was for 21s, it would raise | |||
| # the error instead. Values larger than a day (86400) will be changed to a day. | |||
| flood_sleep_threshold: 60 | |||
| # How many times a request should be retried. Request are retried when Telegram is having | |||
| # internal issues, when there is a FloodWaitError less than flood_sleep_threshold, or when | |||
| # there's a migrate error. May take a negative or null value for infinite retries, but this | |||
| # is not recommended, since some requests can always trigger a call fail (such as searching | |||
| # for messages). | |||
| request_retries: 5 | |||
| # Device info sent to Telegram. | |||
| device_info: | |||
| # "auto" = OS name+version. | |||
| device_model: auto | |||
| # "auto" = Telethon version. | |||
| system_version: auto | |||
| # "auto" = mautrix-telegram version. | |||
| app_version: auto | |||
| lang_code: en | |||
| system_lang_code: en | |||
| # Custom server to connect to. | |||
| server: | |||
| # Set to true to use these server settings. If false, will automatically | |||
| @@ -306,6 +342,7 @@ matrix_mautrix_telegram_configuration_yaml: | | |||
| ip: 149.154.167.40 | |||
| # The port to connect to. 443 may not work, 80 is better and both are equally secure. | |||
| port: 80 | |||
| # Telethon proxy configuration. | |||
| # You must install PySocks from pip for proxies to work. | |||
| proxy: | |||
| @@ -103,11 +103,11 @@ | |||
| state: absent | |||
| when: "not matrix_nginx_proxy_enabled|bool" | |||
| # When Let's Encrypt is not used at all, remove all cronjobs in that cron file. | |||
| - name: Ensure matrix-ssl-lets-encrypt-renew cronjob removed | |||
| cron: | |||
| user: root | |||
| cron_file: matrix-ssl-lets-encrypt | |||
| name: matrix-ssl-lets-encrypt-certificates-renew | |||
| state: absent | |||
| when: "matrix_ssl_retrieval_method != 'lets-encrypt'" | |||
| @@ -28,3 +28,5 @@ matrix_postgres_container_extra_arguments: [] | |||
| # | |||
| # Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:5432"), or empty string to not expose. | |||
| matrix_postgres_container_postgres_bind_port: "" | |||
| matrix_postgres_tool_synapse_janitor: "https://raw.githubusercontent.com/xwiki-labs/synapse_scripts/0b3f035951932ceb396631de3fc701043b9723bc/synapse_janitor.sql" | |||
| @@ -15,16 +15,26 @@ | |||
| - setup-postgres | |||
| - import_tasks: "{{ role_path }}/tasks/import_postgres.yml" | |||
| when: run_import_postgres|bool | |||
| when: run_postgres_import|bool | |||
| tags: | |||
| - import-postgres | |||
| - import_tasks: "{{ role_path }}/tasks/import_sqlite_db.yml" | |||
| when: run_import_sqlite_db|bool | |||
| when: run_postgres_import_sqlite_db|bool | |||
| tags: | |||
| - import-sqlite-db | |||
| - import_tasks: "{{ role_path }}/tasks/upgrade_postgres.yml" | |||
| when: run_upgrade_postgres|bool | |||
| when: run_postgres_upgrade|bool | |||
| tags: | |||
| - upgrade-postgres | |||
| - import_tasks: "{{ role_path }}/tasks/run_synapse_janitor.yml" | |||
| when: run_postgres_synapse_janitor|bool | |||
| tags: | |||
| - run-postgres-synapse-janitor | |||
| - import_tasks: "{{ role_path }}/tasks/run_vacuum.yml" | |||
| when: run_postgres_vacuum|bool | |||
| tags: | |||
| - run-postgres-vacuum | |||
| @@ -0,0 +1,110 @@ | |||
| --- | |||
| # Pre-checks | |||
| - name: Fail if Postgres not enabled | |||
| fail: | |||
| msg: "Postgres via the matrix-postgres role is not enabled (`matrix_postgres_enabled`). Cannot run synapse-janitor." | |||
| when: "not matrix_postgres_enabled|bool" | |||
| # Defaults | |||
| - name: Set postgres_start_wait_time, if not provided | |||
| set_fact: | |||
| postgres_start_wait_time: 15 | |||
| when: "postgres_start_wait_time|default('') == ''" | |||
| - name: Set postgres_synapse_janitor_wait_time, if not provided | |||
| set_fact: | |||
| postgres_synapse_janitor_wait_time: "{{ 7 * 86400 }}" | |||
| when: "postgres_synapse_janitor_wait_time|default('') == ''" | |||
| - name: Set postgres_synapse_janitor_tool_path, if not provided | |||
| set_fact: | |||
| postgres_synapse_janitor_tool_path: "{{ matrix_postgres_base_path }}/synapse_janitor.sql" | |||
| when: "postgres_synapse_janitor_tool_path|default('') == ''" | |||
| # Actual janitor work | |||
| - name: Download synapse-janitor tool | |||
| get_url: | |||
| url: "{{ matrix_postgres_tool_synapse_janitor }}" | |||
| dest: "{{ postgres_synapse_janitor_tool_path }}" | |||
| force: true | |||
| mode: 0550 | |||
| owner: "{{ matrix_user_username }}" | |||
| group: "{{ matrix_user_username }}" | |||
| - name: Ensure matrix-postgres is started | |||
| service: | |||
| name: matrix-postgres | |||
| state: started | |||
| daemon_reload: yes | |||
| - name: Wait a bit, so that Postgres can start | |||
| wait_for: | |||
| timeout: "{{ postgres_start_wait_time }}" | |||
| delegate_to: 127.0.0.1 | |||
| become: false | |||
| - import_tasks: tasks/util/detect_existing_postgres_version.yml | |||
| - name: Abort, if no existing Postgres version detected | |||
| fail: | |||
| msg: "Could not find existing Postgres installation" | |||
| when: "not matrix_postgres_detected_existing|bool" | |||
| - name: Generate Postgres database synapse-janitor command | |||
| set_fact: | |||
| matrix_postgres_synapse_janitor_command: >- | |||
| /usr/bin/docker run --rm --name matrix-postgres-synapse-janitor | |||
| --user={{ matrix_user_uid }}:{{ matrix_user_gid }} | |||
| --cap-drop=ALL | |||
| --network={{ matrix_docker_network }} | |||
| --env-file={{ matrix_postgres_base_path }}/env-postgres-psql | |||
| --mount type=bind,src={{ postgres_synapse_janitor_tool_path }},dst=/synapse_janitor.sql,ro=true | |||
| {{ matrix_postgres_docker_image_latest }} | |||
| psql -v ON_ERROR_STOP=1 -h matrix-postgres {{ matrix_synapse_database_database }} -f /synapse_janitor.sql | |||
| - name: Note about Postgres purging alternative | |||
| debug: | |||
| msg: >- | |||
| Running synapse-janitor with the following Postgres command: `{{ matrix_postgres_synapse_janitor_command }}`. | |||
| If this crashes, you can stop all processes (`systemctl stop matrix-*`), | |||
| start Postgres only (`systemctl start matrix-postgres`) | |||
| and manually run the above command directly on the server. | |||
| - name: Populate service facts | |||
| service_facts: | |||
| - set_fact: | |||
| matrix_postgres_synapse_was_running: "{{ ansible_facts.services['matrix-synapse.service']|default(none) is not none and ansible_facts.services['matrix-synapse.service'].state == 'running' }}" | |||
| - name: Ensure matrix-synapse is stopped | |||
| service: | |||
| name: matrix-synapse | |||
| state: stopped | |||
| daemon_reload: yes | |||
| - name: Run synapse-janitor | |||
| command: "{{ matrix_postgres_synapse_janitor_command }}" | |||
| async: "{{ postgres_synapse_janitor_wait_time }}" | |||
| poll: 10 | |||
| register: matrix_postgres_synapse_janitor_result | |||
| # Intentionally show the results | |||
| - debug: var="matrix_postgres_synapse_janitor_result" | |||
| - name: Ensure matrix-synapse is started, if it previously was | |||
| service: | |||
| name: matrix-synapse | |||
| state: started | |||
| daemon_reload: yes | |||
| when: "matrix_postgres_synapse_was_running|bool" | |||
| - name: Delete synapse-janitor tool | |||
| file: | |||
| path: "{{ postgres_synapse_janitor_tool_path }}" | |||
| state: absent | |||
| @@ -0,0 +1,90 @@ | |||
| --- | |||
| # Pre-checks | |||
| - name: Fail if Postgres not enabled | |||
| fail: | |||
| msg: "Postgres via the matrix-postgres role is not enabled (`matrix_postgres_enabled`). Cannot run vacuum." | |||
| when: "not matrix_postgres_enabled|bool" | |||
| # Defaults | |||
| - name: Set postgres_start_wait_time, if not provided | |||
| set_fact: | |||
| postgres_start_wait_time: 15 | |||
| when: "postgres_start_wait_time|default('') == ''" | |||
| - name: Set postgres_vacuum_wait_time, if not provided | |||
| set_fact: | |||
| postgres_vacuum_wait_time: "{{ 7 * 86400 }}" | |||
| when: "postgres_vacuum_wait_time|default('') == ''" | |||
| # Actual vacuuming work | |||
| - name: Ensure matrix-postgres is started | |||
| service: | |||
| name: matrix-postgres | |||
| state: started | |||
| daemon_reload: yes | |||
| - name: Wait a bit, so that Postgres can start | |||
| wait_for: | |||
| timeout: "{{ postgres_start_wait_time }}" | |||
| delegate_to: 127.0.0.1 | |||
| become: false | |||
| - import_tasks: tasks/util/detect_existing_postgres_version.yml | |||
| - name: Abort, if no existing Postgres version detected | |||
| fail: | |||
| msg: "Could not find existing Postgres installation" | |||
| when: "not matrix_postgres_detected_existing|bool" | |||
| - name: Generate Postgres database vacuum command | |||
| set_fact: | |||
| matrix_postgres_vacuum_command: >- | |||
| /usr/bin/docker run --rm --name matrix-postgres-synapse-vacuum | |||
| --user={{ matrix_user_uid }}:{{ matrix_user_gid }} | |||
| --cap-drop=ALL | |||
| --network={{ matrix_docker_network }} | |||
| --env-file={{ matrix_postgres_base_path }}/env-postgres-psql | |||
| {{ matrix_postgres_docker_image_latest }} | |||
| psql -v ON_ERROR_STOP=1 -h matrix-postgres {{ matrix_synapse_database_database }} -c 'VACUUM FULL VERBOSE' | |||
| - name: Note about Postgres vacuum alternative | |||
| debug: | |||
| msg: >- | |||
| Running vacuum with the following Postgres command: `{{ matrix_postgres_vacuum_command }}`. | |||
| If this crashes, you can stop all processes (`systemctl stop matrix-*`), | |||
| start Postgres only (`systemctl start matrix-postgres`) | |||
| and manually run the above command directly on the server. | |||
| - name: Populate service facts | |||
| service_facts: | |||
| - set_fact: | |||
| matrix_postgres_synapse_was_running: "{{ ansible_facts.services['matrix-synapse.service']|default(none) is not none and ansible_facts.services['matrix-synapse.service'].state == 'running' }}" | |||
| - name: Ensure matrix-synapse is stopped | |||
| service: | |||
| name: matrix-synapse | |||
| state: stopped | |||
| daemon_reload: yes | |||
| - name: Run Postgres vacuum command | |||
| command: "{{ matrix_postgres_vacuum_command }}" | |||
| async: "{{ postgres_vacuum_wait_time }}" | |||
| poll: 10 | |||
| register: matrix_postgres_synapse_vacuum_result | |||
| # Intentionally show the results | |||
| - debug: var="matrix_postgres_synapse_vacuum_result" | |||
| - name: Ensure matrix-synapse is started, if it previously was | |||
| service: | |||
| name: matrix-synapse | |||
| state: started | |||
| daemon_reload: yes | |||
| when: "matrix_postgres_synapse_was_running|bool" | |||
| @@ -1,7 +1,7 @@ | |||
| --- | |||
| # | |||
| # Generic tasks, no matter what kind of server we're using (internal/external) | |||
| # Tasks related to setting up an internal postgres server | |||
| # | |||
| - import_tasks: "{{ role_path }}/tasks/migrate_postgres_data_directory.yml" | |||
| @@ -32,8 +32,6 @@ | |||
| force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_postgres_docker_image_force_pull }}" | |||
| when: matrix_postgres_enabled|bool | |||
| # We always create these directories, even if an external Postgres is used, | |||
| # because we store environment variable files there. | |||
| - name: Ensure Postgres paths exist | |||
| file: | |||
| path: "{{ item }}" | |||
| @@ -70,9 +68,12 @@ | |||
| mode: 0750 | |||
| when: matrix_postgres_enabled|bool | |||
| # | |||
| # Tasks related to setting up an internal postgres server | |||
| # | |||
| - name: Ensure matrix-postgres-update-user-password-hash script created | |||
| template: | |||
| src: "{{ role_path }}/templates/usr-local-bin/matrix-postgres-update-user-password-hash.j2" | |||
| dest: "/usr/local/bin/matrix-postgres-update-user-password-hash" | |||
| mode: 0750 | |||
| when: matrix_postgres_enabled|bool | |||
| - name: Ensure matrix-postgres.service installed | |||
| template: | |||
| @@ -127,9 +128,12 @@ | |||
| msg: "Note: You are not using a local PostgreSQL database, but some old data remains from before in `{{ matrix_postgres_data_path }}`. Feel free to delete it." | |||
| when: "not matrix_postgres_enabled|bool and matrix_postgres_data_path_stat.stat.exists" | |||
| - name: Ensure matrix-postgres-update-user-password-hash script created | |||
| template: | |||
| src: "{{ role_path }}/templates/usr-local-bin/matrix-postgres-update-user-password-hash.j2" | |||
| dest: "/usr/local/bin/matrix-postgres-update-user-password-hash" | |||
| mode: 0750 | |||
| when: matrix_postgres_enabled|bool | |||
| - name: Remove Postgres scripts | |||
| file: | |||
| path: "/usr/local/bin/{{ item }}" | |||
| state: absent | |||
| with_items: | |||
| - matrix-postgres-cli | |||
| - matrix-make-user-admin | |||
| - matrix-postgres-update-user-password-hash | |||
| when: "not matrix_postgres_enabled|bool" | |||
| @@ -1,6 +1,6 @@ | |||
| matrix_riot_web_enabled: true | |||
| matrix_riot_web_docker_image: "bubuntux/riot-web:v1.2.2" | |||
| matrix_riot_web_docker_image: "bubuntux/riot-web:v1.2.4" | |||
| matrix_riot_web_docker_image_force_pull: "{{ matrix_riot_web_docker_image.endswith(':latest') }}" | |||
| matrix_riot_web_data_path: "{{ matrix_base_data_path }}/riot-web" | |||
| @@ -15,12 +15,12 @@ | |||
| - setup-synapse | |||
| - import_tasks: "{{ role_path }}/tasks/import_media_store.yml" | |||
| when: run_import_media_store|bool | |||
| when: run_synapse_import_media_store|bool | |||
| tags: | |||
| - import-media-store | |||
| - import_tasks: "{{ role_path }}/tasks/register_user.yml" | |||
| when: run_register_user|bool | |||
| when: run_synapse_register_user|bool | |||
| tags: | |||
| - register-user | |||
| @@ -39,7 +39,7 @@ | |||
| - self-check | |||
| - import_tasks: "{{ role_path }}/tasks/update_user_password.yml" | |||
| when: run_update_user_password|bool | |||
| when: run_synapse_update_user_password|bool | |||
| tags: | |||
| - update-user-password | |||