Key features
- Cron-scheduled jobs — with manual trigger from the UI or API.
- Multiple sources per job — local files, PostgreSQL, MySQL, MariaDB, MongoDB, Redis, SQLite, S3, and bunny.net Storage.
- Multiple storages per job — local disk, S3-compatible, SFTP, WebDAV, and bunny.net.
- Compression —
tar,tar.gz,tar.zst,tar.xz, andzip, with optional splitting of large archives into parts. - Encryption — optional OpenSSL symmetric encryption (AES-256-CBC and similar ciphers).
- Retention — keep the last N runs, configured per storage.
- Notifications — webhook, Telegram, or email, on success, failure, or both.
- Hook scripts — run a shell script before or after a job (
beforeScript/afterScript). - Env-var references — keep secrets out of the config file with
env:references. - One Go binary — no runtime dependencies; web UI and REST API built in, with an OpenAPI spec at
/api/v1/openapi.
Requirements
snapr ships as a single binary with no runtime. You only need extra tools for what you use:- Building from source: Go 1.25+.
- Database dumps: the dump tool for each database you back up must be on the
PATH—pg_dump(PostgreSQL),mysqldump(MySQL; MariaDB usesmariadb-dumpwhen available and falls back tomysqldump),mongodump(MongoDB),redis-cli(Redis), andsqlite3(SQLite).
Where to go next
Quick start
Install snapr, write a minimal config, and run your first backup.
Docker
Run snapr in a container with docker run or Docker Compose.
Configuration
The full YAML reference — server, jobs, sources, storages, and more.
Jobs
Schedules, retention, compression, and hook scripts.
Sources
Everything snapr can back up, from local files to databases.
Storages
Where your archives go — local, S3, SFTP, WebDAV, and bunny.net.
Notifiers
Get notified about job results via webhook, Telegram, or email.
API reference
The JSON HTTP API for scripting and integrations.