Skip to main content
snapr is a self-hosted backup service for files and databases. Each job reads from one or more sources, packs the data into an archive (optionally encrypted), and uploads it to one or more storages — all on a cron schedule. The web UI and REST API let you see job status, follow live logs, trigger runs, and download archives.

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.
  • Compressiontar, tar.gz, tar.zst, tar.xz, and zip, 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 PATHpg_dump (PostgreSQL), mysqldump (MySQL; MariaDB uses mariadb-dump when available and falls back to mysqldump), mongodump (MongoDB), redis-cli (Redis), and sqlite3 (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.