--- backup_store_dir: "{{ ansible_env.HOME }}/backups" backup_store_ssh_key: "{{ ansible_env.HOME }}/.ssh/id_pull" backup_store_on_calendar: "*-*-* 04:00:00" # One entry per source. `retention_days` is the LONG tail; the source keeps its # own short local retention. # - name: headscale # source: "backup-pull@headscale.contrapeso.xyz:/opt/backups/headscale/" # retention_days: 90 backup_store_sources: [] # ── Reporting ──────────────────────────────────────────────────────────────── # check-backups.sh reports one result PER SOURCE plus one for the store itself, # so the base URL is the endpoints collection and the script appends each key. # Empty is valid: the script still prints its report and exits 0/1. backup_store_check_push_base: "" backup_store_check_push_token: "" # Every six hours, offset past the 04:00 pull so the first run of the day sees a # finished pull. The BACKUPS are daily, but this check is not - it reads the # source's dump timestamp out of the artefact filename, so running it more often # catches "the source stopped dumping" within hours rather than a day, and lets # the Gatus heartbeat be 7h instead of 30h. backup_store_check_on_calendar: "*-*-* 05:30:00,11:30:00,17:30:00,23:30:00" # An artefact older than this is stale. Sources dump daily at 02:00-02:30 and the # pull is at 04:00, so 26h tolerates exactly one missed night before alarming. backup_store_check_max_age_hours: 26