{"id":43902410,"url":"https://github.com/skyfay/dbackup","last_synced_at":"2026-05-03T15:02:52.995Z","repository":{"id":190967650,"uuid":"683680975","full_name":"Skyfay/DBackup","owner":"Skyfay","description":"A self-hosted database backup automation tool for MySQL, PostgreSQL, MongoDB \u0026 more. Backup to S3, FTP, or Local Storage. Features cron scheduling, notifications, and easy restores via a modern Web UI.","archived":false,"fork":false,"pushed_at":"2026-04-26T14:14:32.000Z","size":17474,"stargazers_count":59,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-26T14:29:58.705Z","etag":null,"topics":["automation","backup","backups","cloud-storage","dashboard","database","database-backup","database-backups","databases","devops","docker","mongodb","mysql","nextjs","open-source","postgresql","recovery","s3","self-hosted","shadcn-ui"],"latest_commit_sha":null,"homepage":"https://dbackup.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Skyfay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"skyfay"}},"created_at":"2023-08-27T11:13:56.000Z","updated_at":"2026-04-26T14:27:53.000Z","dependencies_parsed_at":"2024-11-14T12:35:33.562Z","dependency_job_id":null,"html_url":"https://github.com/Skyfay/DBackup","commit_stats":null,"previous_names":["skyfay/database-backup-manager","skyfay/dbackup"],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/Skyfay/DBackup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyfay%2FDBackup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyfay%2FDBackup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyfay%2FDBackup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyfay%2FDBackup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Skyfay","download_url":"https://codeload.github.com/Skyfay/DBackup/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Skyfay%2FDBackup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32573336,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","backup","backups","cloud-storage","dashboard","database","database-backup","database-backups","databases","devops","docker","mongodb","mysql","nextjs","open-source","postgresql","recovery","s3","self-hosted","shadcn-ui"],"created_at":"2026-02-06T19:04:26.373Z","updated_at":"2026-05-03T15:02:52.981Z","avatar_url":"https://github.com/Skyfay.png","language":"TypeScript","funding_links":["https://ko-fi.com/skyfay"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Skyfay/DBackup/main/docs/public/logo.svg\" alt=\"DBackup Logo\" width=\"120\"\u003e\n\u003c/div\u003e\n\n\u003ch1 align=\"center\"\u003eDBackup\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eSelf-hosted database backup automation with encryption, compression, and smart retention.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MySQL-4479A1?logo=mysql\u0026logoColor=white\" alt=\"MySQL\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/PostgreSQL-4169E1?logo=postgresql\u0026logoColor=white\" alt=\"PostgreSQL\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MongoDB-47A248?logo=mongodb\u0026logoColor=white\" alt=\"MongoDB\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/SQLite-003B57?logo=sqlite\u0026logoColor=white\" alt=\"SQLite\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Redis-DC382D?logo=redis\u0026logoColor=white\" alt=\"Redis\"\u003e\n  \u003cimg src=\"https://custom-icon-badges.demolab.com/badge/Microsoft%20SQL%20Server-CC2927?logo=mssqlserver-white\u0026logoColor=white\" alt=\"MSSQL\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-GPL--3.0-blue.svg\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/docker/pulls/skyfay/dbackup?logo=docker\u0026logoColor=white\" alt=\"Docker Pulls\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-linux%20%7C%20macos%20%7C%20windows-lightgrey\" alt=\"Platform\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/self--hosted-yes-%239B59B6\" alt=\"Self-hosted\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/open_source-%E2%9D%A4%EF%B8%8F-red\" alt=\"Open Source\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/Skyfay/DBackup/actions/workflows/release.yml\"\u003e\u003cimg src=\"https://github.com/Skyfay/DBackup/actions/workflows/release.yml/badge.svg\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/Skyfay/DBackup\"\u003e\u003cimg src=\"https://img.shields.io/codecov/c/github/Skyfay/DBackup?label=coverage\" alt=\"Coverage\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Skyfay/DBackup/commits\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/Skyfay/DBackup?color=%234B8BBE\" alt=\"Last Commit\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.com/invite/YvgPyky\"\u003e\u003cimg src=\"https://img.shields.io/discord/580801656707350529?label=Discord\u0026color=%235865f2\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://dbackup.app\"\u003eWebsite\u003c/a\u003e •\n  \u003ca href=\"https://docs.dbackup.app\"\u003eDocumentation\u003c/a\u003e •\n  \u003ca href=\"https://docs.dbackup.app/user-guide/getting-started\"\u003eQuick Start\u003c/a\u003e •\n  \u003ca href=\"https://api.dbackup.app\"\u003eAPI Reference\u003c/a\u003e •\n  \u003ca href=\"https://docs.dbackup.app/changelog\"\u003eChangelog\u003c/a\u003e •\n  \u003ca href=\"https://docs.dbackup.app/roadmap\"\u003eRoadmap\u003c/a\u003e\n\u003c/p\u003e\n\n\n### What is DBackup?\n\nDBackup is a comprehensive, self-hosted backup solution designed to automate and secure your database backups. It provides AES-256-GCM encryption, flexible storage options, and intelligent retention policies to ensure your data is always protected and recoverable.\n\nWhether you're running a single MySQL database or managing multiple PostgreSQL, MongoDB, and SQL Server instances, DBackup offers a unified interface with real-time monitoring, granular access control, and seamless restore capabilities.\n\n**No vendor lock-in by design** - every backup is a standard database dump (SQL, BSON, RDB, etc.) encrypted with open AES-256-GCM. If DBackup is ever unavailable, you can decrypt and restore your backups with a single Node.js script and the key from your Recovery Kit. No proprietary formats, no dependencies on DBackup itself.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/1f6ba8c7-8b66-4b43-a0de-d4c4e0617205\" width=\"800\" autoplay muted loop playsinline\u003e\u003c/video\u003e\n\u003c/div\u003e\n\n## ✨ Features\n\n### 🗄️ Database Backup\n\n- **7 Database Engines** - MySQL, MariaDB, PostgreSQL, MongoDB, SQLite, Redis, and Microsoft SQL Server\n- **Selective Database Backup** - Choose exactly which databases to back up per job instead of creating separate sources for each database\n- **Multi-Database Jobs** - Back up multiple databases from a single source in one job with a unified TAR archive format\n- **AES-256-GCM Encryption** - Encrypt backups with managed Encryption Profiles, key rotation, and downloadable Recovery Kits for offline decryption\n- **GZIP \u0026 Brotli Compression** - Reduce backup size and storage costs with built-in compression\n\n### ☁️ Storage \u0026 Destinations\n\n- **13+ Storage Adapters** - S3, Cloudflare R2, Hetzner, Google Drive, Dropbox, OneDrive, SFTP, FTP, WebDAV, SMB, Rsync, and local filesystem\n- **Multi-Destination Jobs** - Upload each backup to multiple storage destinations simultaneously for redundancy or off-site copies\n- **Storage Explorer** - Browse backup files across all destinations, inspect metadata, download files, or generate secure direct download links\n- **Storage Monitoring \u0026 Alerts** - Per-destination alerts for usage spikes, storage limit warnings, and missing backups within a defined time window\n\n### 🔄 Restore \u0026 Recovery\n\n- **One-Click Restore** - Restore directly from the Storage Explorer to any configured database target\n- **Database Remapping** - Restore databases under different names or map multiple databases to new targets\n- **Version Compatibility Check** - Pre-restore validation warns about version mismatches before execution\n- **SHA-256 Integrity Verification** - Checksums generated on backup and verified before restore\n- **No Vendor Lock-In** - Backups are standard database dumps encrypted with open AES-256-GCM. Decrypt and import manually with just Node.js, no DBackup required\n- **Recovery Kit** - Downloadable ZIP with your encryption key and a standalone decryption script for disaster recovery without DBackup\n\n### 📊 Monitoring \u0026 Visibility\n\n- **Live Backup Progress** - Real-time progress tracking shows exactly what's happening during backup and restore operations\n- **Interactive Dashboard** - Activity charts, job status overview, KPI cards, and auto-refreshing activity feeds\n- **Storage Usage History** - Track storage growth over time with area charts and trend indicators\n- **Execution History** - Full log of every backup and restore with duration, file size, status, and error details\n\n### 🔔 Notifications\n\n- **9 Notification Channels** - Discord, Slack, Teams, Telegram, Gotify, ntfy, Webhook, SMS (Twilio), and Email (SMTP)\n- **Per-Job Notification Settings** - Configure which notification channels fire for each backup job individually\n- **System Event Notifications** - Get notified about user logins, account creation, restore results, storage alerts, update availability, and system errors across all channels\n- **Repeat Intervals** - Configurable reminder intervals for recurring alerts (storage warnings, update notices)\n\n### ⏰ Scheduling \u0026 Retention\n\n- **Cron-based Scheduling** - Flexible job scheduling with a visual Schedule Picker (Simple Mode + Cron Mode)\n- **GVS Retention Policies** - Grandfather-Father-Son rotation with per-destination retention settings\n- **Automated Config Backups** - Self-backup of the entire DBackup configuration to any storage adapter\n\n### 👥 Access Control \u0026 Security\n\n- **SSO / OIDC** - OpenID Connect with pre-built adapters for Authentik, PocketID, Keycloak, and a generic OIDC option\n- **RBAC** - User groups with granular permissions, protected SuperAdmin group, and audit logging\n- **2FA / Passkeys** - Two-factor authentication and WebAuthn passkey support\n- **Configurable Rate Limits** - Per-category rate limiting (Auth, API Read, API Write) adjustable from the Settings UI\n\n### 🔗 API \u0026 Automation\n\n- **REST API** - Trigger backups, poll executions, manage adapters, and explore storage via API\n- **Fine-grained API Keys** - Scoped permissions and expiration dates for CI/CD pipelines and scripts\n- **Ready-made Examples** - cURL, Bash, and Ansible examples included in the API docs\n\n### 🎨 Designed for Simplicity\n\n- **Intuitive UI** - Clean, modern interface that makes complex backup workflows feel simple\n- **Quick Setup Wizard** - Guided 7-step first-run setup to get your first backup running in minutes\n- **Highly Configurable** - Session lifetimes, rate limits, retention periods, notification preferences, system tasks, and more\n- **Docker Ready** - Multi-arch images (AMD64/ARM64), health checks, graceful shutdown, and configurable PUID/PGID\n\n## 🚀 Quick Start\n\n**Supported Platforms**: AMD64 (x86_64) • ARM64 (aarch64)\n\n```yaml\n# docker-compose.yml\nservices:\n  dbackup:\n    image: skyfay/dbackup:latest\n    container_name: dbackup\n    restart: always\n    ports:\n      - \"3000:3000\"\n    environment:\n      - ENCRYPTION_KEY=       # openssl rand -hex 32\n      - BETTER_AUTH_URL=https://localhost:3000\n      - BETTER_AUTH_SECRET=   # openssl rand -base64 32\n      # All additional environment variables: https://docs.dbackup.app/user-guide/installation#environment-variables\n    volumes:\n      - ./data:/data              # All persistent data (db, storage, certs)\n      - ./backups:/backups        # Optional: used for local backups\n```\n\n```bash\ndocker-compose up -d\n```\n\nOpen [https://localhost:3000](https://localhost:3000) and create your admin account (accept the self-signed certificate warning on first visit).\n\n📖 **Full installation guide**: [docs.dbackup.app/user-guide/getting-started](https://docs.dbackup.app/user-guide/getting-started)\n\n## 🗄️ Supported Databases\n\n| Database | Versions | Connection Modes |\n| :--- | :--- | :--- |\n| PostgreSQL | 12 – 18 | Direct, SSH |\n| MySQL | 5.7, 8, 9 | Direct, SSH |\n| MariaDB | 10, 11 | Direct, SSH |\n| MongoDB | 4 – 8 | Direct, SSH |\n| Redis | 6.x, 7.x, 8.x | Direct, SSH |\n| SQLite | 3.x | Local, SSH |\n| Microsoft SQL Server | 2017, 2019, 2022 | Direct (+ SSH for file transfer) |\n\n## ☁️ Supported Destinations\n\n| Destination | Details |\n| :--- | :--- |\n| Local Filesystem | Store backups directly on the server |\n| Amazon S3 | Native AWS S3 with storage class support (Standard, IA, Glacier, Deep Archive) |\n| S3 Compatible | Any S3-compatible storage (MinIO, Wasabi, etc.) |\n| Cloudflare R2 | Cloudflare R2 Object Storage |\n| Hetzner Object Storage | Hetzner S3 storage (fsn1, nbg1, hel1, ash) |\n| Google Drive | Google Drive via OAuth2 |\n| Dropbox | Dropbox via OAuth2 with chunked upload support |\n| Microsoft OneDrive | OneDrive via Microsoft Graph API / OAuth2 |\n| SFTP | SSH/SFTP with password, private key, or SSH agent auth |\n| FTP / FTPS | Classic FTP with optional TLS |\n| WebDAV | WebDAV servers (Nextcloud, ownCloud, etc.) |\n| SMB (Samba) | Windows/Samba network shares (SMB2, SMB3) |\n| Rsync | File transfer via rsync over SSH |\n\n## 🔔 Supported Notifications\n\n| Channel | Details |\n| :--- | :--- |\n| Discord | Webhook-based notifications with rich embeds |\n| Slack | Incoming webhook notifications with Block Kit formatting |\n| Microsoft Teams | Adaptive Card notifications via Power Automate webhooks |\n| Gotify | Self-hosted push notifications with priority levels |\n| ntfy | Topic-based push notifications (self-hosted or ntfy.sh) |\n| Generic Webhook | JSON payloads to any HTTP endpoint (PagerDuty, etc.) |\n| Telegram | Bot API push notifications to chats, groups, and channels |\n| SMS (Twilio) | SMS text message alerts via Twilio API |\n| Email (SMTP) | SMTP with SSL/STARTTLS support, multiple recipients |\n\n## 📚 Documentation\n\nFull documentation is available at **[docs.dbackup.app](https://docs.dbackup.app)**:\n\n- [User Guide](https://docs.dbackup.app/user-guide/getting-started) - Installation, configuration, usage\n- [API Reference](https://api.dbackup.app) - Interactive REST API documentation\n- [Developer Guide](https://docs.dbackup.app/developer-guide/) - Architecture, adapters, contributing\n- [Changelog](https://docs.dbackup.app/changelog) - Release history\n- [Roadmap](https://docs.dbackup.app/roadmap) - Planned features\n\n## 🛠️ Development\n\n```bash\n# Clone \u0026 install\ngit clone https://github.com/Skyfay/DBackup.git \u0026\u0026 cd DBackup\npnpm install\n\n# Configure environment\ncp .env.example .env  # Edit with your secrets\n\n# Initialize database\nnpx prisma db push\n\n# Start dev server\npnpm dev\n```\n\nFor testing infrastructure and contribution guidelines, see the [Developer Guide](https://docs.dbackup.app/developer-guide/).\n\n## 💬 Community \u0026 Support\n\n- 💬 **Discord**: Join our community at [https://dc.skyfay.ch](https://dc.skyfay.ch)\n- 📝 **Documentation**: Full guides and API reference at [docs.dbackup.app](https://docs.dbackup.app)\n- 🔗 **API Reference**: Interactive API docs at [api.dbackup.app](https://api.dbackup.app) or in-app at `/docs/api`\n- 🐛 **Issues**: Report bugs or request features on [GitHub Issues](https://github.com/Skyfay/DBackup/issues)\n- 📧 **Support**: General questions and support via [support@dbackup.app](mailto:support@dbackup.app)\n- 🔒 **Security**: Report vulnerabilities responsibly via [security@dbackup.app](mailto:security@dbackup.app) (please do **not** open public issues for security reports)\n\n## 🤖 AI Development Transparency\n\n### Architecture \u0026 Concept\n\nThe system architecture, infrastructure design, strict technology stack selection, and feature specifications for DBackup were entirely conceptualized and directed by a human System Engineer to solve real-world infrastructure challenges.\n\n### Implementation\n\nThe application code was generated by AI coding agents following detailed architectural specifications and coding guidelines. All features were manually tested for correctness, stability, and real-world reliability. Automated unit tests (Vitest) and static security audits complement the manual QA process.\n\n### Open for Review\n\nDBackup is thoroughly tested and used in production, but a formal manual security audit by an external developer has not yet been completed. If you are a software developer or cybersecurity professional, your expertise is highly welcome! We invite the open-source community to review the code, submit PRs, and help us elevate DBackup to a fully verified, enterprise-ready standard.\n\n\u003e **Security Disclosure**: If you discover a security vulnerability, please **do not** open a public GitHub issue. Instead, report it responsibly via email to **[security@dbackup.app](mailto:security@dbackup.app)**.\n\n## 📝 License\n\n[GNU General Public License v3.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyfay%2Fdbackup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskyfay%2Fdbackup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyfay%2Fdbackup/lists"}