From a03faef70f372255fe1c4292e41beb7a8c80a6f9 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Mon, 13 Jul 2026 21:18:43 +0300 Subject: [PATCH] Stop excluding Synapse's local_thumbnails from BorgBackup Synapse only generates thumbnails of local media at upload time (unless dynamic_thumbnails is enabled, which the playbook does not do) and no tooling exists to regenerate them, so restoring a backup left all previously uploaded local images without thumbnails permanently. The official Synapse backup guide recommends backing this directory up. Related to #4004. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 10 ++++++++++ group_vars/matrix_servers | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 246c541f3..830cd83d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# 2026-07-14 + +## BorgBackup now includes Synapse's local thumbnails + +For Synapse servers, the built-in [BorgBackup](./docs/configuring-playbook-backup-borg.md) integration no longer excludes the media store's `local_thumbnails` directory from backups. + +Synapse only generates thumbnails of local media at upload time (unless `dynamic_thumbnails` is enabled, which the playbook does not do), and there is no tooling to regenerate them. Restoring a backup made with the previous exclusion list therefore left all previously uploaded local images without thumbnails. The [official Synapse backup guide](https://element-hq.github.io/synapse/latest/usage/administration/backups.html) recommends backing this directory up, and the playbook now follows that recommendation. + +Expect your backups to grow somewhat, depending on how much image media your local users have uploaded. If you prefer the old behavior, you can redefine `backup_borg_location_exclude_patterns` in your `vars.yml`. + # 2026-07-12 ## matrix-registration-bot has been removed from the playbook diff --git a/group_vars/matrix_servers b/group_vars/matrix_servers index 31a4176c5..0f5ccf670 100755 --- a/group_vars/matrix_servers +++ b/group_vars/matrix_servers @@ -3378,9 +3378,11 @@ backup_borg_postgresql_databases_auto: "{{ postgres_managed_databases | map(attr backup_borg_location_source_directories: - "{{ matrix_base_data_path }}" +# local_thumbnails is deliberately NOT excluded: with dynamic_thumbnails disabled (Synapse's default), +# nothing regenerates lost thumbnails, so the official Synapse backup guide recommends backing them up. backup_borg_location_exclude_patterns: | {{ - ([matrix_synapse_media_store_path + '/remote_content', matrix_synapse_media_store_path + '/local_thumbnails', matrix_synapse_media_store_path + '/remote_thumbnail', matrix_synapse_media_store_path + '/url_cache', matrix_synapse_media_store_path + '/url_cache_thumbnails'] if matrix_homeserver_implementation == 'synapse' else []) + ([matrix_synapse_media_store_path + '/remote_content', matrix_synapse_media_store_path + '/remote_thumbnail', matrix_synapse_media_store_path + '/url_cache', matrix_synapse_media_store_path + '/url_cache_thumbnails'] if matrix_homeserver_implementation == 'synapse' else []) + ([postgres_data_path] if postgres_enabled else []) }}