# snapr > Self-hosted backup service for files and databases, with a web UI and a REST API ## Docs - [Introduction](https://snapr.seshuk.im/introduction.md): snapr is a self-hosted backup service that schedules, compresses, encrypts, and uploads backups of files and databases, with a web UI and REST API. - [Quick start](https://snapr.seshuk.im/quick-start.md): Install snapr, write a minimal config, and run your first backup in a few minutes. - [Docker](https://snapr.seshuk.im/deployment/docker.md): Run snapr in a container with docker run or Docker Compose, including volume, path, and environment variable setup. - [Overview](https://snapr.seshuk.im/configuration/overview.md): How snapr finds its YAML config file, the top-level structure, and how env: references keep secrets out of the file. - [Overview](https://snapr.seshuk.im/configuration/server/overview.md): The server block configures the HTTP listener: JSON API, bundled web UI, authentication, permissions, and log limits. - [Authentication](https://snapr.seshuk.im/configuration/server/auth.md): Enable JWT-based login for the snapr web UI and protect API endpoints with server.auth. - [Permissions](https://snapr.seshuk.im/configuration/server/permissions.md): Control what authenticated users can do in the snapr web UI: downloads, manual runs, and config visibility. - [Web UI](https://snapr.seshuk.im/configuration/server/ui.md): Toggle the bundled snapr web UI on or off, or run the server in API-only mode. - [Log limits](https://snapr.seshuk.im/configuration/server/log-limits.md): Configure how many lines the API returns in the initial tail request that backs the snapr log viewers. - [Jobs](https://snapr.seshuk.im/configuration/jobs.md): Job reference: cron schedules, compression formats, retention, hook scripts, sources, storages, encryption, splitting, and notifiers. - [Overview](https://snapr.seshuk.im/configuration/sources/overview.md): What a backup source is, which source types snapr supports, the fields they share, and how remote sources are fetched. - [Local files](https://snapr.seshuk.im/configuration/sources/local.md): Back up files and directories on the host filesystem with the local source, including exclude pattern syntax. - [PostgreSQL](https://snapr.seshuk.im/configuration/sources/postgresql.md): Back up a PostgreSQL database with pg_dump: connection options, table excludes, extra flags, and version requirements. - [MySQL](https://snapr.seshuk.im/configuration/sources/mysql.md): Back up MySQL databases with mysqldump: single database, all databases, table filters, sockets, and extra flags. - [MariaDB](https://snapr.seshuk.im/configuration/sources/mariadb.md): Back up MariaDB with mariadb-dump (mysqldump fallback). Configuration is identical to the MySQL source. - [MongoDB](https://snapr.seshuk.im/configuration/sources/mongodb.md): Back up MongoDB with mongodump: connection URI or host/port, oplog support, collection excludes, and extra flags. - [Redis](https://snapr.seshuk.im/configuration/sources/redis.md): Back up Redis as an RDB snapshot: live dumps via redis-cli or direct copies of an existing RDB file. - [SQLite](https://snapr.seshuk.im/configuration/sources/sqlite.md): Back up a single SQLite database file as a SQL text dump using the sqlite3 CLI. - [S3](https://snapr.seshuk.im/configuration/sources/s3.md): Pull files from an S3-compatible bucket so they can be re-archived to another destination, with optional incremental sync. - [bunny.net](https://snapr.seshuk.im/configuration/sources/bunny.md): Pull files from a bunny.net Storage Zone over the HTTP API, with optional Pull Zone token auth and incremental sync. - [Overview](https://snapr.seshuk.im/configuration/storages/overview.md): Where snapr uploads archives: supported backends, shared fields, on-disk layout, retention, and the listing cache. - [Local disk](https://snapr.seshuk.im/configuration/storages/local.md): Store archives in a directory on the snapr host or a mounted Docker volume. - [S3](https://snapr.seshuk.im/configuration/storages/s3.md): Upload archives to AWS S3 or any S3-compatible service, with storage classes and optional presigned downloads. - [SFTP](https://snapr.seshuk.im/configuration/storages/sftp.md): Upload archives to an SFTP server over SSH using password or private-key authentication. - [WebDAV](https://snapr.seshuk.im/configuration/storages/webdav.md): Upload archives to a WebDAV server such as Nextcloud, OwnCloud, or Apache mod_dav. - [bunny.net](https://snapr.seshuk.im/configuration/storages/bunny.md): Upload archives to a bunny.net Storage Zone, with optional signed Pull Zone URLs for direct CDN downloads. - [Encryption](https://snapr.seshuk.im/configuration/encryption.md): Encrypt backup archives per job with OpenSSL symmetric encryption, and decrypt them manually when you need to. - [Splitter](https://snapr.seshuk.im/configuration/splitter.md): Cut large backup archives into fixed-size parts before upload, and reassemble them with cat when needed. - [Overview](https://snapr.seshuk.im/configuration/notifiers/overview.md): Send a webhook, Telegram message, or email after each job run, with independent success and failure toggles. - [Webhook](https://snapr.seshuk.im/configuration/notifiers/webhook.md): Send an HTTP request with a JSON run summary to any URL after a snapr job finishes. - [Telegram](https://snapr.seshuk.im/configuration/notifiers/telegram.md): Send job run results to a Telegram chat, group, or channel through a bot after each snapr job run. - [Email](https://snapr.seshuk.im/configuration/notifiers/email.md): Send job run results by SMTP email to one or more recipients after each snapr job run. - [Logs](https://snapr.seshuk.im/configuration/logs.md): The top-level logs block: file layout, rotation settings, disabling file sinks, and edge cases like disk-full and renamed jobs. - [Full example](https://snapr.seshuk.im/configuration/full-example.md): A complete annotated snapr.yaml covering logs, server, auth, and three jobs with S3, SFTP, encryption, splitting, and Telegram notifications. - [Overview](https://snapr.seshuk.im/api-reference/overview.md): How to authenticate against the snapr HTTP API, call it with curl, and stream logs over SSE. - [Issue a session cookie](https://snapr.seshuk.im/api-reference/auth/issue-a-session-cookie.md) - [Clear the session cookie](https://snapr.seshuk.im/api-reference/auth/clear-the-session-cookie.md) - [Report current auth state](https://snapr.seshuk.im/api-reference/auth/report-current-auth-state.md) - [List jobs](https://snapr.seshuk.im/api-reference/jobs/list-jobs.md) - [Single-job status](https://snapr.seshuk.im/api-reference/jobs/single-job-status.md) - [Job config (secrets stripped)](https://snapr.seshuk.im/api-reference/jobs/job-config-secrets-stripped.md): When server.permissions.showConfig is false, only name and schedule are returned. - [Trigger a job run](https://snapr.seshuk.im/api-reference/jobs/trigger-a-job-run.md): Reserves a run slot and returns immediately. The backup runs in the background. - [Cancel an in-flight job](https://snapr.seshuk.im/api-reference/jobs/cancel-an-in-flight-job.md) - [List snapshots for a job](https://snapr.seshuk.im/api-reference/backups/list-snapshots-for-a-job.md) - [Download one snapshot or part](https://snapr.seshuk.im/api-reference/backups/download-one-snapshot-or-part.md): Returns the archive bytes (200) or a 307 redirect when the storage backend issues signed URLs (S3 signed mode, Bunny Pull Zone). - [Tail a job log plus run metadata](https://snapr.seshuk.im/api-reference/logs/tail-a-job-log-plus-run-metadata.md) - [Stream a per-job log (SSE)](https://snapr.seshuk.im/api-reference/logs/stream-a-per-job-log-sse.md) - [Tail the system log](https://snapr.seshuk.im/api-reference/logs/tail-the-system-log.md) - [Stream the system log (SSE)](https://snapr.seshuk.im/api-reference/logs/stream-the-system-log-sse.md): Server-Sent Events. Heartbeat ': ping' frames every 15 seconds. - [Process status](https://snapr.seshuk.im/api-reference/system/process-status.md): Liveness check used by Docker HEALTHCHECK. Always public — no auth required. - [UI bootstrap settings](https://snapr.seshuk.im/api-reference/system/ui-bootstrap-settings.md): Log limits, file-sink toggles, permission set. Public — the UI reads it before login. ## OpenAPI Specs - [openapi](https://snapr.seshuk.im/api-reference/openapi.json)