Skip to content

FAQ

Why do the movers run as root?

A backup tool has to read every app's data, and that data is owned by many different uids. Running the mover as root is the only way to read all of it without per-app chowns. The orchestrator itself runs nonroot — only the short-lived movers are privileged, and only for the duration of a backup. Narrow it with SABON_MOVER_USER (or the per-app user label / groups) when every source and repo is readable by one uid. See Privileges.

Why a separate repository per app?

Isolation. Each (app, target) gets its own restic repository, so retention and restores are independent and the blast radius of a damaged repo is one app, not everything. It also keeps restores scoped and fast.

Does sabon run restic prune?

Not on every backup. Each run calls restic forget to mark snapshots for removal (cheap, no lock). Reclaiming space with restic prune locks the repository and blocks backups, so it runs as a separate, less frequent scheduled job. See check & prune.

Can I restore without sabon?

Yes. The repositories are ordinary restic repositories — with the repo location and its password, plain restic restores everything, no sabon required. See Restore without sabon. This is the point of the design: sabon orchestrates, but it is never a dependency for recovery.

Where do backend credentials go?

In the orchestrator's environment (e.g. RESTIC_PASSWORD, AWS_ACCESS_KEY_ID), referenced from the targets file. sabon passes them through to the movers. Keep them out of version control and image layers — inject them from a secret store at runtime. See the threat model.

Does it back up named volumes, or only bind mounts?

Both. Because a mover mounts the source, sabon backs up named volumes of any driver as well as bind mounts, without reaching into /var/lib/docker.

How do I get a consistent database backup?

Don't back up live Postgres/MySQL data files. Write a dump in a pre-hook and back up the dump instead (or quiesce the app with stop: true, or use a ZFS snapshot). See Hooks for the pg_dump pattern.

Is Docker Swarm production-ready?

No — Swarm support is experimental. It is validated only by a single-node docker swarm init end-to-end test in CI and has not been tested against a multi-node production cluster. ZFS snapshots and exec-mode hooks are unsupported in swarm. See Deployment.

Which restic version does sabon use?

Whichever is bundled in the sabon image for that release — a single version shared by the orchestrator and every mover, since movers reuse the sabon image. Pin the sabon image tag to pin restic.