From 12b4d6823ec32e7d3b69f778611e1ddb57f91e95 Mon Sep 17 00:00:00 2001 From: librelad Date: Tue, 26 May 2026 16:13:46 +0100 Subject: [PATCH] feat(backup): file-capture labels for linkding, vaultwarden, headscale, mastodon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now that uid auto-discover is in (d424473), adding more apps is just naming the container + path — no uid guessing. Four more apps get complete backups of their private data dirs (previously: incomplete on the file side because libreportal can't read sub-UID-owned content from the host). - linkding-service -> /etc/linkding/data (overlaps with sqlite db, same pattern as gitea — dump replays over the captured tree on restore, harmless) - vaultwarden-service -> /data (same overlap pattern) - headscale-service -> /var/lib/headscale (same overlap pattern) - mastodon-service -> /mastodon/public/system (uploads; postgres handled separately by backup.db) Coverage now: nextcloud, bookstack, gitea, owncloud, linkding, vaultwarden, headscale, mastodon. Skipped jellyfin — it has multiple internal sqlite DBs and no backup.db declared; adding just backup.files without backup.db / backup.live wouldn't activate live capture, and adding backup.live blind could yield torn sqlites. That one wants proper DB declaration first. Co-Authored-By: Claude Opus 4.7 Signed-off-by: librelad --- containers/headscale/docker-compose.yml | 1 + containers/linkding/docker-compose.yml | 1 + containers/mastodon/docker-compose.yml | 1 + containers/vaultwarden/docker-compose.yml | 1 + 4 files changed, 4 insertions(+) diff --git a/containers/headscale/docker-compose.yml b/containers/headscale/docker-compose.yml index 4bacc0b..2cbd741 100755 --- a/containers/headscale/docker-compose.yml +++ b/containers/headscale/docker-compose.yml @@ -21,6 +21,7 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA libreportal.backup.db: "sqlite:::data/db.sqlite" + libreportal.backup.files: "headscale-service:/var/lib/headscale:data" healthcheck: disable: HEALTHCHECK_DATA #LIBREPORTAL|HEALTHCHECK_TAG|HEALTHCHECK_DATA # GLUETUN_OFF_BEGIN diff --git a/containers/linkding/docker-compose.yml b/containers/linkding/docker-compose.yml index 36d3fff..5259013 100755 --- a/containers/linkding/docker-compose.yml +++ b/containers/linkding/docker-compose.yml @@ -19,6 +19,7 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA libreportal.backup.db: "sqlite:::data/db.sqlite3" + libreportal.backup.files: "linkding-service:/etc/linkding/data:data" traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA # TRAEFIK_PORT_1_BEGIN traefik.http.routers.linkding-service.entrypoints: web,websecure diff --git a/containers/mastodon/docker-compose.yml b/containers/mastodon/docker-compose.yml index 0a0c70f..be6543c 100755 --- a/containers/mastodon/docker-compose.yml +++ b/containers/mastodon/docker-compose.yml @@ -37,6 +37,7 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA libreportal.backup.db: "postgres:mastodon-postgres:postgres:" + libreportal.backup.files: "mastodon-service:/mastodon/public/system:mastodon_data" traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA # TRAEFIK_PORT_1_BEGIN traefik.http.routers.mastodon-service.entrypoints: web,websecure diff --git a/containers/vaultwarden/docker-compose.yml b/containers/vaultwarden/docker-compose.yml index cc01bd2..839192d 100755 --- a/containers/vaultwarden/docker-compose.yml +++ b/containers/vaultwarden/docker-compose.yml @@ -26,6 +26,7 @@ services: libreportal.category: "CATEGORY_DATA" #LIBREPORTAL|CATEGORY_TAG|CATEGORY_DATA libreportal.title: "TITLE_DATA" #LIBREPORTAL|TITLE_TAG|TITLE_DATA libreportal.backup.db: "sqlite:::vaultwarden-data/db.sqlite3" + libreportal.backup.files: "vaultwarden-service:/data:vaultwarden-data" traefik.enable: TRAEFIK_ENABLE_DATA #LIBREPORTAL|TRAEFIK_ENABLE_TAG|TRAEFIK_ENABLE_DATA # TRAEFIK_PORT_1_BEGIN traefik.http.routers.vaultwarden-service.entrypoints: web,websecure