Self-backup & DR¶
Settings → PiHerder backup — not the same as per-server rsync backups. Admin only (run, restore, download, delete, and schedule).
Archives: format v2 .tar.gz under ./piherder_backups → /herder_backups. Host dir must be writable by container user (uid 1000).
Included¶
| Content | Notes |
|---|---|
| Servers | Encrypted SSH keys/passwords, schedules, inventory, flags |
| Users | Hashes, roles, profile, encrypted TOTP |
| TOTP backup codes + trusted devices | 2FA recovery state |
| Docker compose versions | Multi-file history |
| Push VAPID + subscriptions | Same master key on restore |
| Notifications | Recent (capped) |
| Integrations + bindings | Encrypted credentials |
| Operational settings | Timezone, force 2FA, schedules (appsetting) |
| Avatars | Packed under data/avatars/… |
| Service logos | Packed under data/service_logos/… (integration icons; B08) |
| Templates + stack deployments | Ciphertext secrets |
| Audit log | Full mode only (optional, capped) |
Not included¶
| Content | Why |
|---|---|
| Jobs queue | Ephemeral |
| Per-server rsync files | Different volume |
| External Kuma/Grafana instances | Only PiHerder-side config |
Restore¶
- Dry-run previews counts.
- Apply upserts by id/email/endpoint.
- Encrypted fields need the same
PIHERDER_MASTER_KEY. - Restart web so scheduler / VAPID pick up DB state.
Schedule¶
Enable cron + mode (config_only | full) + keep count in Settings. Manual run available.
Cron wall-clock uses the app timezone from Settings → General (same setting as Audit/Jobs display).
Timezone¶
Archive list mtime and other Settings timestamps are shown in the app timezone. Changing timezone does not rewrite stored UTC values.