Skip to content
Pocket Homelab
Get the appComing soon to the App Store

Pocket Backups

v0.3.0 · Self-hosted · MIT

Backups for the whole box, and a plain answer.

Pocket Backups dumps your databases consistently, snapshots your folders with restic and copies them on to a NAS, a cloud or an offline USB disk. Any file from any night comes back in two clicks, a coverage check notices the app you forgot, and the overview tells you in one sentence whether everything is safe.

  • Included in Pocket Box
  • Sign in with Pocket Core
  • Works with restic and rclone and Backrest
Pocket Backups on an iPhone: everything is backed up, with the nightly, USB disk and Google Drive jobs belowPocket Backups on an iPhone: everything is backed up, with the nightly, USB disk and Google Drive jobs below

Runs

Every step of every night.

Each run lists what it did, in order: the database dumps, the snapshot, retention, a read-back and every copy, with sizes and timings, and the full log underneath.

A nightly run: three databases dumped, a snapshot with 2.31 GiB added, retention, a read-back and copies to a NAS, Google Drive and Backblaze B2A nightly run: three databases dumped, a snapshot with 2.31 GiB added, retention, a read-back and copies to a NAS, Google Drive and Backblaze B2

Restore

Any file from any night.

Pick a snapshot, browse it like a folder, tick what you need, then download it or put it back on the box.

  • Download a single file, or a whole folder as a zip
  • Put files back where they were, or somewhere new
Restore: last night's snapshot opened at a holiday photo folder, two photos ticked and ready to download or put backRestore: last night's snapshot opened at a holiday photo folder, two photos ticked and ready to download or put back

Coverage

It notices the app you forgot.

Every running container is checked against your backups. A new app shows up as not covered until you add it to a job, or say it needs no backup.

  • Add a source straight from the app's row
  • Leave stateless apps out on purpose, with a reason
  • Discover suggests database containers, SQLite files and volumes
Coverage: five apps covered by the nightly job, one left out on purpose and one not covered, with Add a source and Needs no backupCoverage: five apps covered by the nightly job, one left out on purpose and one not covered, with Add a source and Needs no backup

Offline disk

Plug it in, and it backs up.

An offline USB disk is mounted for the backup, checked, unmounted and powered down afterwards. With Run when plugged in, plugging it in is all it takes, and you are told when it is safe to unplug.

  • Its own retention, such as 3 last, 12 monthly and 3 yearly
  • Reads back part of the data after each backup
  • Shows how full the disk is
An offline USB disk run on an iPhone: mount, snapshot, retention, check and unmount, ending with safe to unplugAn offline USB disk run on an iPhone: mount, snapshot, retention, check and unmount, ending with safe to unplug

And the rest of it

  • Databases, dumped properly

    SQLite through an online snapshot, PostgreSQL and MariaDB dumped inside their own containers. A failed dump never replaces last night's good copy.

  • Copies wherever you like

    Mirror the repository to a NAS over SFTP, Google Drive, OneDrive, Dropbox, Backblaze B2, S3 or Pocket Files. A failed check pauses the copies so a damaged repository never overwrites a good one.

  • One schedule page

    Every backup, cloud pull, check and prune that runs on its own, and what comes up next.

  • Keep Backrest, or move off it

    Import Backrest's repositories and plans and let them call Pocket Backups around each snapshot, or take the plans over in one step. The restic repositories stay as they are.

  • Hear about it

    Notifications through Apprise, ntfy or a webhook for failures and warnings, and a heartbeat URL so silence is noticed too.

Install

One container, restic and rclone inside.

Mount what you want to back up: read-only is enough for backing up, read-write lets you restore in place. The Docker socket is for database dumps and the coverage check. Open it and create the first account.

On a Pocket Box it is already installed.

Every setting in the README →

docker run -d --name pocket-backups -p 8080:8080 -v ./data:/data \
  -v /var/run/docker.sock:/var/run/docker.sock --group-add "$(getent group docker | cut -d: -f3)" \
  -v /srv:/srv:ro -e BASE_URL=https://backups.example.com -e SECURE_COOKIES=true \
  ghcr.io/abjelosevic88/pocket-homelab-backups:latest