Files
homelabstack/stacks/backup/README.md
T
ginnoir 4bb9413391 Set explicit Kopia UI credentials for web login.
Use HTTP basic auth username kopia with KOPIA_REPOSITORY_PASSWORD; document in README.
2026-06-10 21:38:10 -05:00

41 lines
1.5 KiB
Markdown

# backup stack
Kopia → Backblaze B2. Backs up `/config`, **selected** `labdata` paths (see `SCOPE.md`), and nightly SQL dumps.
## Before first deploy
1. **Backblaze B2** (recommended offsite — ~$6/TB/mo)
- Create a bucket (e.g. `valhalla-homelab-backup`)
- Create an **Application Key** scoped to that bucket
- Note the S3 endpoint for your region
2. **Fill `stack.env`**
- `KOPIA_REPOSITORY_PASSWORD``openssl rand -hex 32`
- `B2_KEY_ID`, `B2_APPLICATION_KEY`, `B2_BUCKET`, `B2_ENDPOINT`
3. **Host paths**
- `/config/kopia/{config,cache,logs}` — Kopia state
- `/config/backup/dumps` — nightly SQL dumps
- `/config/backup/{init-kopia.sh,snapshot-paths.txt,crontab,scripts/}` — copied from this repo (Portainer CE cannot bind-mount relative git paths; sync after editing those files)
4. **Register** new Portainer git stack → `stacks/backup` (one-time)
5. **Push** → Portainer redeploys within 5 min
## After deploy
- UI: https://backup.ginnoir.com (LAN/Tailscale) — username `kopia`, password = `KOPIA_REPOSITORY_PASSWORD` in `stack.env`
- Subscribe phone to ntfy topic `backup` (or path in `NTFY_URL`)
- **Restore test** (do once): pick a small dump from `/config/backup/dumps/`, restore to a throwaway container
## Schedule
| Time | What |
|------|------|
| 02:50 | `backup-dump-databases.sh` — SQL dumps |
| 03:00 | Kopia snapshots (paths in `snapshot-paths.txt`) |
## If B2 creds are empty
Kopia still starts with UI — configure repository manually, then set policies for each path in `snapshot-paths.txt`.