Add scheduled and manual backups

Backups are .tar.gz archives of a consistent database snapshot (VACUUM
INTO) plus the images folder. They run on a cron schedule, daily at 3:00
by default, and the newest N scheduled ones are kept (7 by default).
Manual backups are never pruned.

Settings → Backups offers schedule presets or a custom cron expression,
retention, "Back up now", and download/delete for each backup. A small
built-in parser handles standard 5-field cron syntax with names, ranges,
steps and @daily-style shorthands.

Backups go to CANON_BACKUP_DIR (default data/backups). Compose mounts a
separate canon-backups volume at /backups, overridable with
CANON_BACKUP_PATH.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Opus 5.5 committed 2026-09-30 14:30:40 -07:00
1 parent 72b49d709a
commit f3185ba7bd
18 files changed
+940 -10

No files matched your search

+6
View File
@@ -23,6 +23,11 @@ services:
# A named volume by default, so a Git sync never touches the database.
# Set CANON_DATA_PATH to a host folder (e.g. ./data) to keep it there.
- ${CANON_DATA_PATH:-canon-data}:/data
# Backups get their own mount so they can live somewhere else, like a
# NAS share. Set CANON_BACKUP_PATH to a host folder to use one.
- ${CANON_BACKUP_PATH:-canon-backups}:/backups
environment:
CANON_BACKUP_DIR: /backups
env_file:
- path: .env
required: false
@@ -31,6 +36,7 @@ services:
volumes:
canon-data:
canon-backups:
networks:
chromanet: