Changelog โ
All notable changes to DBackup are documented here.
v2.3.1 - General Improvements, MySQL/MariaDB SSH Mode Fixes and SSH Key Conversion โ
Released: May 11, 2026
๐จ Improvements โ
- Activity Logs: Restore executions now record the initiating user in the "Trigger" column, showing a "Manual" badge with the user's name - the same badge style used for manually triggered backup jobs.
๐ Bug Fixes โ
- SSH: Passphrase-protected private keys in PKCS#8 encrypted format (
-----BEGIN ENCRYPTED PRIVATE KEY-----) now work natively without any manual conversion. The keys are transparently decrypted in-memory via Node.jscryptobefore being passed to the SSH library, which means Ed25519 and other key types with a passphrase are fully supported. This covers the SSH tunnel path (all database adapters), the SFTP storage adapter, and the MSSQL SSH transfer. The Vault credential dialog now shows a helpful amber hint when this format is detected, indicating that the passphrase field must be filled in. - MySQL/MariaDB SSH mode: Removed
--protocol=tcpfrom remote command arguments. On HestiaCP and other setups where MariaDB uses theunix_socketauth plugin, forcing TCP caused ERROR 1698 ("Access denied") even with correct credentials. Remote commands now let MariaDB choose the connection method. - MySQL/MariaDB SSH mode: Fixed a false positive in the "Test Connection" check. A
SELECT 1step is now run aftermysqladmin ping- if authentication actually fails (e.g. ERROR 1045), the test correctly returns failure with the error message instead of a misleading "version unknown" success. - MySQL/MariaDB SSH mode:
getDatabasesWithStatsnow falls back to a plainSHOW DATABASESquery (returning 0 for size/table count) when theinformation_schemastats query fails due to restricted permissions. This prevents a hard error in the Database Explorer on restricted setups.
๐ Changed โ
- MySQL/MariaDB SSH mode: Passwords are no longer passed via
MYSQL_PWD(silently ignored by MariaDB 11.4+). Credentials are now written to a temporary.my.cnffile locally, uploaded to the remote server via SFTP binary transfer (never visible in process lists or shell history), used with--defaults-file(which reads only the temp file, bypassing any system-level/etc/mysql/my.cnfor~/.my.cnfthat could conflict), and deleted immediately after the command completes. - MySQL/MariaDB Direct mode: Passwords are no longer passed via
MYSQL_PWDfor consistency and to support MariaDB 11.4+ client binaries. A temporary.my.cnffile (mode 0600) is now written locally and passed via--defaults-file, then deleted in afinallyblock.
๐ Documentation โ
- MySQL/MariaDB source guide: Updated SSH mode description to reflect the SFTP-based password delivery. Added SFTP requirement note (enabled by default on OpenSSH, no extra config needed), clarified SSH user permissions (write to
/tmp, nosudorequired), added troubleshooting entries for HestiaCPunix_socketauth and disabled SFTP subsystem.
๐ณ Docker โ
- Image:
skyfay/dbackup:v2.3.1 - Also tagged as:
latest,v2 - CI Image:
skyfay/dbackup:ci - Platforms: linux/amd64, linux/arm64
v2.3.0 - CI Image, Activity Log Trigger and General Improvements โ
Released: May 10, 2026
โจ Features โ
- Activity Logs: Executions now record the trigger source. The history table shows a new "Trigger" column with a colored badge indicating how the job was started - "Manual" (Web UI, with the user's name), "Scheduler" (cron-based), or "Api" (with the API key name). Existing executions without trigger data gracefully show a dash. (#72)
- Instance Name: Added an optional "Instance Name" field under Settings - General. When set, the browser tab title changes to "DBackup | {name}" (e.g. "DBackup | Production"), making it easy to distinguish multiple instances at a glance. The sidebar branding remains unchanged. (#73)
- Date Format: Added "European (14/01/2026)" (
dd/MM/yyyy) as a new date format option in Profile settings. The existing European dot format label was updated to "European (14.01.2026)" for clarity. - CI Image: Added
skyfay/dbackup:ci- a lightweight Ubuntu-based helper image for triggering DBackup jobs from CI/CD pipelines (GitHub Actions, GitLab CI, Azure DevOps). The image contains onlybash,curl, andjq. Thanks @stewieoO (#71) - API Trigger Dialog: GitHub Actions, GitLab CI, and new Azure DevOps tabs now use the
skyfay/dbackup:cicontainer image. Pipeline examples are simplified to a singlerun: /backup/execute.shstep.
๐ Changed โ
- Codecov: Set
informational: trueon the patch coverage check so the Codecov status check never blocks a PR, even when patch coverage is below the target.
๐ Documentation โ
- webhook-triggers: Replaced the old manual GitHub Actions curl/jq example with a full CI/CD section covering GitHub Actions, GitLab CI, and Azure DevOps using the
skyfay/dbackup:cicontainer image. - sqlite: Fixed Docker mount instructions - changed from file-level bind mount to directory-level mount. The Online Backup API (
.backup) requires access to WAL/SHM companion files; file-level mounts caused "attempt to write a readonly database" errors. Updated Backup Process section to document the.backupcommand instead of the old.dumpapproach.
๐ง CI/CD โ
- release.yml: Added
build-ci-imagejob that builds and pushesskyfay/dbackup:ci(GHCR + Docker Hub) automatically on every release, running in parallel with the main image build.
๐ณ Docker โ
- Image:
skyfay/dbackup:v2.3.0 - Also tagged as:
latest,v2 - CI Image:
skyfay/dbackup:ci - Platforms: linux/amd64, linux/arm64
v2.2.1 - Scheduler Timezone Fixes, Smart Recovery Improvements, and more Bug Fixes โ
Released: May 9, 2026
โจ Features โ
- profile: Added an "Auto (Browser Timezone)" option to the timezone selector in Profile. New users now default to Auto instead of UTC - timestamps automatically follow the browser's detected timezone without any manual configuration.
๐ Bug Fixes โ
- SQLite: Fixed a silent data-loss bug where backup jobs produced SQL text files instead of valid binary databases. The dump command now uses the SQLite Online Backup API (
.backup) producing a proper.dbfile, fixing WAL-mode databases that previously produced near-empty output. The restore pipeline now uses.restoreinstead of SQL-via-stdin. - Timezone: Schedule picker preview now shows the correct time in the Scheduler Timezone (from Settings - General). The timezone name is appended to the description (e.g.
Runs every day at 03:00 (Europe/Berlin)). (#66) - Timezone: Dashboard activity chart now groups executions by day using the Scheduler Timezone. Jobs running near midnight are now assigned to the correct day. (#65)
- Timezone: History table "Started At" column now displays timestamps in each user's own profile timezone instead of forcing the scheduler timezone on everyone.
- Timezone: Health history tooltip now uses the user's profile timezone for timestamps.
- Smart Recovery: Fixed Smart Recovery failing for single-DB backups after a key delete and re-import. The content heuristic now checks GZIP magic bytes unconditionally (catches pipeline GZIP and MongoDB
--gziparchives without pipeline compression), and adds detection for the PostgreSQL custom dump format (PGDMPmagic at offset 0). Previously, only multi-DB TAR archives and plain-text SQL were recognized - all PostgreSQL single-DB backups (which always usepg_dump -Fcbinary format) and MongoDB single-DB gzip archives fell through with no match and Smart Recovery always failed. (#58)
๐ Documentation โ
- Roadmap: Added Restic storage backend as a planned feature. (#68)
- Timezones guide: Added a new Timezones page explaining the two-timezone model (Scheduler Timezone vs. User Display Timezone), configuration, and troubleshooting.
- Scheduling guide: Updated the Time Zone section to refer to the Scheduler Timezone UI setting instead of the
TZenvironment variable.
๐ณ Docker โ
- Image:
skyfay/dbackup:v2.2.1 - Also tagged as:
latest,v2 - Platforms: linux/amd64, linux/arm64
v2.2.0 - Templates System, Docker Image Update and Bug Fixes โ
Released: May 7, 2026
โ ๏ธ Breaking: All existing per-destination inline retention configurations have been migrated to "Keep All (Unlimited)". The new Templates System requires retention to be configured by assigning a named Retention Policy to each job destination. Existing retention rules must be re-configured via Templates -> Retention Policies. You can also mark one policy as the system-wide default so it applies automatically to any destination that has no explicit policy assigned.
โจ Features โ
- Templates System: Added a dedicated Templates page under Administration (
/dashboard/templates) with three tabs: Retention Policies (reusable named retention rules assignable per destination, with a "Set as Default" option - the default policy is used automatically when no policy is assigned to a destination), Naming Templates (custom backup file name patterns with token insertion, one can be set as system default), and Schedule Presets (named cron expressions usable as quick-fill presets or as live-linked schedules that automatically apply to all linked jobs when updated). (#61) - Jobs: Destinations in the Job form now use a Retention Policy picker (instead of inline retention config tabs) to assign a named retention policy per destination. Legacy per-destination retention JSON is still respected as a fallback.
- Jobs: The Advanced tab of the Job form now includes a Naming Template picker to override the system default file name pattern for that specific job.
- Jobs: The Schedule field in the Job form now includes a Preset toggle that opens a searchable dropdown of saved Schedule Presets, selecting one auto-fills the cron expression.
- Jobs: Added a "Browse Backups" button (
FolderOpenicon) to the Actions column in the Jobs table, positioned after the Run button. It navigates directly to the Storage Explorer with the destination pre-selected and the job name filter automatically applied (if backups for that job exist). When a job has multiple destinations, a dropdown appears to select which one to open. (#59) - Naming Templates - Extended Token Set: Added
{job_name}as the canonical job-name token (replaces{name}, which remains supported for backward compatibility). AddedMMM(short month name, e.g.Jan) andMMMM(full month name, e.g.January) date tokens. Arbitrary literal text can now be used freely in any pattern without escaping (e.g.prod_{db_name}-yyyy-MM-dd). The template engine was rewritten to perform direct token substitution instead of delegating the full pattern string todate-fnsformat, eliminating silent misinterpretation of literal characters as format tokens. Token chips in the dialog now insert at the current cursor position, are grouped by category (Job Info, Date, Time), and show a tooltip with a description on hover. - Storage Explorer - Default sort: The file list in the Storage Explorer now defaults to sorting by "Last Modified" in descending order so the latest backups are always shown first. (#59)
๐ Bug Fixes โ
- MySQL
caching_sha2_password: Fixed authentication failure when connecting to MySQL 8 servers using thecaching_sha2_passwordauth plugin. The Docker base image has been migrated from Alpine (node:24-alpine) to Debian Slim (node:24-slim). The Debian packagemariadb-clientships withlibmariadb3 3.3.x, which supportscaching_sha2_passwordnatively - the Alpine MariaDB client was too old to handle this auth method. (#48) - SQLite backups: Fixed missing
sqlite3CLI tools in the Docker image, which caused SQLite backup jobs to fail when the database was mounted locally inside the container. (#62) - Smart Recovery: Fixed a bug where restoring after a key delete and re-import always failed, even when the correct key was available. The content heuristic incorrectly rejected uncompressed TAR archives (multi-DB backups) because their headers consist mostly of null-byte padding - Smart Recovery now also detects POSIX TAR magic bytes (
ustarat offset 257). (#58)
๐๏ธ Removed โ
- Telegram MarkdownV2: Removed the
MarkdownV2parse mode option from Telegram notification adapters. It caused silent delivery failures while the UI incorrectly reported success. UseHTMLorMarkdowninstead. (#57)
๐งช Tests โ
- Improved unit test coverage across multiple services and adapters.
- Naming Template Engine: Added missing test cases - empty pattern, plain-text passthrough, date-token-in-job-name edge case (documented behavior), and timezone day-boundary shift. Total engine tests: 16.
- Naming Template Service: Test for
getNamingTemplateupdated to verify the returned value (was only checking the call, not the result).
๐ง CI/CD โ
- Docker base image: Migrated from
node:24-alpinetonode:24-slim(Debian bookworm). The Debian packagemariadb-clientships withlibmariadb3 3.3.x, which supports thecaching_sha2_passwordauthentication plugin natively - fixing the Alpine limitation where the bundled MariaDB client was too old.su-execreplaced withgosu. MongoDB Database Tools bumped to100.16.1via direct CDN download (MongoDB ships no Debian 12 arm64 packages - arm64 uses theubuntu2204-arm64build, which is compatible with Debian bookworm). - Healthcheck: Fixed healthcheck failing when the
PORTenvironment variable was set to a non-default value. The check now uses${PORT:-3000}and correctly follows the configured port.
๐ณ Docker โ
- Image:
skyfay/dbackup:v2.2.0 - Also tagged as:
latest,v2 - Platforms: linux/amd64, linux/arm64
v2.1.1 - Docker Secrets support and SSH Credential Profile fixes โ
Released: May 5, 2026
โจ Features โ
- Docker Secrets: Added
_FILEconvention support forENCRYPTION_KEYandBETTER_AUTH_SECRET- setENCRYPTION_KEY_FILE=/run/secrets/encryption_keyto load the value from a file instead of passing it as a plaintext environment variable. Docker Swarm secrets and any file-based secrets manager (Vault Agent, Kubernetes secrets mounted as files) are now supported without a custom entrypoint wrapper. (#53)
๐จ Improvements โ
- Storage Explorer: The "Source" column now shows the database-specific adapter icon (MySQL, PostgreSQL, MongoDB, SQLite, etc.) instead of the generic database icon, matching the icon style used on the Sources page.
๐ Bug Fixes โ
- sources: Fixed "SSH username is required" error when testing an SSH connection for a SQLite source that uses an SSH Credential Profile. The SQLite SSH test button now correctly passes
adapterIdandsshCredentialIdto thetest-sshroute so the credential profile is resolved server-side. The route also normalizes SQLite's unprefixed SSH fields (username,authType, etc.) to the standardssh*-prefixed convention expected byextractSshConfig. Fixed the same credential-profile issue for the remote file browser ("Select Remote Path") in the Configuration tab -sshCredentialIdis now forwarded throughFieldListandSchemaFieldtoFileBrowserDialogand resolved in thefilesystem/remoteAPI route before connecting via SFTP. (#55)
๐ Documentation โ
- Docker Secrets: Added "Docker Secrets (
_FILEconvention)" section to the Installation Guide with full setup examples for Docker Swarm and Docker Compose. Added the same convention to the Environment Variables developer reference, including error handling behavior and a link to the install guide.
๐ณ Docker โ
- Image:
skyfay/dbackup:v2.1.1 - Also tagged as:
latest,v2 - Platforms: linux/amd64, linux/arm64
v2.1.0 - Backup Notification Subjects, Telegram Topic Support, and 2FA Setup UX โ
Released: May 5, 2026
โจ Features โ
- System Tasks: Each task row in Settings - System Tasks now shows a "Last run" timestamp and a "Next run" timestamp. Both are displayed in the system timezone (Scheduler Timezone setting) and respect the user's configured date and time format.
- Notifications: Backup notification subjects (email, Discord, Slack, etc.) now include the job name (e.g. "Backup Successful: Production DB" / "Backup Failed: Production DB"), making it easy to identify which job triggered the notification without opening it. (#46)
- Telegram: Added optional Topic/Thread ID field (
messageThreadId) to the Telegram notification adapter, enabling notifications to be sent to a specific topic in Telegram forum groups. Leave the field empty to send to the main chat (fully backwards-compatible). (#45) - 2FA: The TOTP setup dialog now has a tab switcher between "QR Code" and "Manual Key". The secret key is hidden by default and can be revealed with the eye icon, supporting manual entry in authenticator apps even without clipboard access (e.g. over plain HTTP). (#39)
๐ Bug Fixes โ
- System Configuration Backup: Credential Profiles (Vault) were missing from config backup export and import. The export now includes all credential profiles (with encrypted
datadecrypted to plaintext inside the backup, re-encrypted on import). The import restores credential profiles before adapters (required by FK constraint) and correctly remapsprimaryCredentialId/sshCredentialIdon adapters when IDs differ between systems. Invalid credential references are now silently nulled out with a warning instead of causing a transaction failure.
๐ Security โ
- Dependencies: Updated
webdavto5.10.0to pull infast-xml-parser >= 5.7.0, fixing an XML Comment/CDATA injection vulnerability (GHSA-gh4j-gqv2-49f6). - Dependencies: Added
pnpm overridesto forcedompurify >= 3.4.0(fixes 9 XSS/prototype-pollution CVEs in themonaco-editortransitive dependency) andpostcss >= 8.5.10(fixes XSS via unescaped</style>in Next.js transitive dependency, GHSA-qx2v-qp2m-jg93).
๐ณ Docker โ
- Image:
skyfay/dbackup:v2.1.0 - Also tagged as:
latest,v2 - Platforms: linux/amd64, linux/arm64
v2.0.1 - SSH Connection Fix with new Credential Profiles โ
Released: May 3, 2026
๐ Bug Fixes โ
- sources: Fixed "SSH username is required" error when testing an SSH database source connection that uses an SSH Credential Profile. The test-ssh route now resolves the credential profile before validating the username, matching the behavior of the main test-connection route.
- sources: Fixed missing placeholder text for SSH Host and SSH Port fields in the SSH Connection tab - added generic
sshHost,sshPort,sshUsername, andsshPrivateKeyentries toPLACEHOLDERSinform-constants.ts.
๐งช Tests โ
- update-service: Fixed 3 failing unit tests that hardcoded
'2.0.0'ascurrentVersion- tests now importversiondynamically frompackage.jsonso they stay correct after every version bump.
๐ณ Docker โ
- Image:
skyfay/dbackup:v2.0.1 - Also tagged as:
latest,v2 - Platforms: linux/amd64, linux/arm64
v2.0.0 - Credential Profiles, Naming Template, Cloning, and Major Refactor โ
Released: May 3, 2026
โ ๏ธ Breaking: Existing Sources, Destinations and Notifications that store credentials inline will require a Credential Profile to be assigned before they come back online. Create the matching profiles in the Security Vault, then assign them to each adapter via the edit form. This has to be done manually for each adapter, so take some time before upgrading. The new Credential Profile system is a critical security improvement that centralizes and encrypts all secrets in the Vault, but it does require some manual migration effort for existing adapters. New adapters created after the update will require credential profiles from the start.
โจ Features โ
- credentials: Added the Generic Credential Profile System - reusable, AES-256-GCM encrypted credential profiles (Username/Password, SSH Key, Access Key, Token, SMTP) that adapters reference instead of storing secrets inline. Profiles are managed in the Security Vault, assigned via a searchable picker in the adapter form, and automatically merged into every backup, restore, health check, and notification at runtime.
- setup: Added Credential Profile picker to the Quick Setup Wizard Source, Destination, and Notification steps - the picker now renders identically to the standalone "Add Source/Destination/Notification" dialogs, including SSH credential support. The selected profile IDs are included in the adapter creation payload.
- ui: Added clone (copy) button to Sources, Destinations, Notifications, and Backup Jobs - cloning creates a duplicate with the name suffix "(Copy)" and carries over all settings including Vault credential references. Cloned jobs start as disabled to prevent accidental execution. Resolves #34
- storage: Added
jurisdictionfield to the Cloudflare R2 adapter (Standard,EU,FedRAMP) - EU-jurisdiction buckets require the*.eu.r2.cloudflarestorage.comendpoint, without this setting they return "Access Denied" or "bucket does not exist" - website: Added a new Website https://dbackup.app
- scheduler: Added a UI setting in Settings > General to configure the scheduler timezone without changing the
TZenvironment variable. When set, the DB value takes explicit priority overTZfor all cron jobs. Thanks @iberlob (#41) - backup: Added a configurable filename pattern for backup files. Patterns support tokens (
{name},{db_name},yyyy,MM,dd,HH,mm,ss) with a live preview and clickable token chips in Settings > General. Thanks @iberlob (#41) - 2fa: Added a "Can't scan? Copy the secret key" button to the 2FA setup dialog so users who cannot scan the QR code can manually enter the TOTP secret into their authenticator app. (#39)
๐ Bug Fixes โ
- storage: Fixed FTP/FTPS adapter uploading to a doubled path when the job folder contains subdirectories -
basic-ftp'sensureDirchanges the working directory to the created directory, causing the subsequentuploadFromcall to resolve the relative path against the new CWD instead of root, resulting in a 553 Permission denied error from the server. Acd("/")is now called afterensureDirto reset the working directory before the upload. - notifications: Fixed Email (SMTP)
FromandTofields appearing in both the Connection and Configuration tabs - removedfromandtofromNOTIFICATION_CONNECTION_KEYSso they only render in the Configuration tab - storage: Fixed Google Drive, OneDrive, and Dropbox OAuth redirect URIs using
req.nextUrl.origin(resolves to0.0.0.0:3000internally) instead ofBETTER_AUTH_URLwhen deployed behind a reverse proxy, causing OAuth failures - Thanks @garrettstoupe - jobs: Fixed pipeline Compression selector being permanently disabled for all adapter types on the job form -
isNativeCompressionActivenow only evaluates to true when a PostgreSQL source is selected and a native compression algorithm (Legacy, Gzip, LZ4, ZSTD) is active. Non-PostgreSQL adapters can always choose a compression algorithm.
๐ Security โ
- deps: Updated
nextfrom16.2.2to16.2.4- fixes DoS with Server Components (GHSA-q4gf-8mx6-v5v3) - deps: Updated
@scalar/api-reference-reactfrom0.9.18to0.9.31- resolves criticalprotobufjsarbitrary code execution (GHSA-xq3m-2v4x-88gg) via transitive dependency update - deps: Updated
better-authand@better-auth/ssofrom1.5.6to1.6.9- resolvesdrizzle-ormSQL injection (GHSA-gpj5-g38j-94v9) and 4@xmldom/xmldomXML injection/DoS vulnerabilities via transitive dependency updates - deps: Added
vite@^7.3.2as direct devDependency - fixes 3 high-severity path traversal and arbitrary file read vulnerabilities in dev server (GHSA-v2wj-q39q-566r, GHSA-p9ff-h696-f583, GHSA-4w7w-66w2-5vf9) - deps: Updated
nodemailerfrom7.0.13to8.0.7- fixes SMTP command injection via CRLF in transport name and envelope size (GHSA-vvjj-xcjg-gr5g, GHSA-c7w3-x93f-qmm8)
๐จ Improvements โ
- history: Replaced native browser scrollbar with Shadcn
ScrollAreain the Notification Log preview dialog, consistent with the Activity Log dialog - jobs: Renamed "Security" tab to "Advanced" in the backup job form - the tab contains both Compression and Encryption settings, so "Advanced" is more accurate
- refactor: Major codebase reorganization - split three oversized files (
config-service.ts,restore-service.ts,adapters/definitions.ts) into focused sub-modules via the Facade Pattern, and grouped all loose files insrc/lib/(20 files into 6 folders),src/services/(19 files into 9 folders), andsrc/app/actions/(14 files into 5 folders) into a clear directory structure. Also consolidatedsrc/types.tsintosrc/types/index.ts, all ~600 import paths across source, tests, and docs were updated and public APIs remain unchanged
๐ Changed โ
- docs: Renamed
wiki/folder todocs/and moved documentation domain fromdbackup.apptodocs.dbackup.appacross all configuration files, app source code, CI/CD workflows, and docs content - deps: Bumped minor/patch versions for
react,react-dom,tailwindcss,@tailwindcss/postcss,eslint-config-next,vitest,basic-ftp,@aws-sdk/client-s3,@aws-sdk/lib-storage,jsdom,mongodb,mssql,tar-stream,zod,react-hook-form,lucide-react- no breaking changes
๐ Documentation โ
- SSO: Fixed incorrect SSO callback URL in all provider setup guides - the correct path is
/api/auth/sso/callback/{provider-id}, not/api/auth/callback/{provider-id}. - credentials: Added a new user-guide page
security/credential-profiles.mddocumenting types, slots, inline creation flow, reference tracking, REVEAL semantics, and the REST surface, added a top-of-page note tosecurity/encryption.mdclarifying that the Vault now hosts both an Encryption tab and a Credentials tab, added the page to the security sidebar in.vitepress/config.mts - api: Documented the full
/api/credentialsREST surface inpublic/openapi.yamlunder theVaulttag, including aCredentialTypeenum and per-typedataschemas (UsernamePasswordData,SshKeyData,AccessKeyData,TokenData,SmtpData), plus a newBadRequestshared response - api: Added missing
POST /jobs/{id}/clone,POST /adapters/{id}/clone, andPOST /executions/{id}/cancelendpoints to bothpublic/openapi.yamlandapi-docs/openapi.yaml. FixedExecutionStatusschema to include theCancelledvalue. Extended/adapters/test-connectionrequest body with optionalprimaryCredentialIdandsshCredentialIdfields. Synced Vault tag description between both files. - adapters: Updated all database source guides (MySQL, PostgreSQL, MongoDB, Redis, MSSQL, SQLite) to replace inline credential fields with Credential Profile pickers (
USERNAME_PASSWORDorSSH_KEYtype). Added::: info Credential Profile requiredboxes with links to the credential-profiles page. - adapters: Updated all destination guides (SFTP, FTP, SMB, WebDAV, rsync, Amazon S3, S3-Compatible, Cloudflare R2, Hetzner Object Storage) to replace inline credential fields with Credential Profile pickers (
SSH_KEY,USERNAME_PASSWORD, orACCESS_KEYtype). Added setup guide steps to create the credential profile first. Added Jurisdiction field and EU jurisdiction warning to R2 guide. - adapters: Updated Email (SMTP) notification guide to replace inline User/Password fields with
SMTPcredential profile picker. - jobs: Added "Filename Pattern" section to
jobs/index.mddocumenting the configurable filename pattern setting (Settings โ General), all supported tokens ({name},{db_name}, date/time tokens), live preview, and clickable token chips. - first-steps: Updated Quick Setup "Advanced tab" reference (renamed from "Security" in v2.0.0) and revised Manual Setup Step 2 (MySQL example) to reference creating a
USERNAME_PASSWORDcredential profile before adding the source. - profile-settings: Added note about "Can't scan? Copy the secret key" button in the 2FA setup dialog.
๐๏ธ Removed โ
- dead-code: Removed unused
checkPermission as _checkPermissionalias imports fromactions/backup/encryption.tsandactions/backup/upload.ts- the symbol was never called in either file - dead-code: Removed 43-line developer thought-stream comment block from
uploadAvatar()inactions/backup/upload.ts, along with a redundantawait getUserPermissions()call that served no authorization purpose
๐งช Tests โ
- coverage: Massively expanded the unit test suite across the entire codebase - added hundreds of new tests covering all database adapters (MySQL, PostgreSQL, MSSQL, MongoDB, Redis, SQLite), all storage adapters, notification adapters, the backup pipeline steps, services, auth, crypto, OIDC, and core utilities, bringing the majority of source files to 100% statement and line coverage.
๐ณ Docker โ
- Image:
skyfay/dbackup:v2.0.0 - Also tagged as:
latest,v2 - Platforms: linux/amd64, linux/arm64
v1.4.8 - Scheduler, Runner & TLS Fixes โ
Released: April 24, 2026
๐ Bug Fixes โ
- scheduler: Fixed a race condition where concurrent
scheduler.refresh()calls (e.g. saving a job while config-backup settings are updated simultaneously) could create orphanednode-crontasks that are never stopped. These ghost tasks could cause scheduled jobs to fire more than once per cron interval - scheduler: Fixed the scheduler singleton not being stored on
globalThisin production mode (NODE_ENV=production). If the module was re-imported in a fresh module scope (a known Next.js standalone behavior), a second independentBackupSchedulerinstance with its own cron tasks was created - runner: Fixed a TOCTOU race condition in
performExecutionthat caused duplicate backup files when two or more jobs are scheduled at the same cron minute. BothprocessQueue()calls ran concurrently, both found the samePendingexecution, and both ran the full backup pipeline. The execution is now claimed atomically via a conditionalupdateMany(status: "Pending" โ "Running"), the call that getscount=0back exits immediately without running the backup (#32) - tls: Fixed self-signed certificate not including the hostname from
BETTER_AUTH_URLas a SubjectAltName (SAN). Browsers like Brave (and per RFC, all browsers) blockfetch()API calls when the SAN does not match the accessed hostname, even after manually accepting the certificate warning for the page itself. The generated SAN now includes the hostname/IP extracted fromBETTER_AUTH_URLin addition tolocalhostand127.0.0.1. On startup, if an existing self-signed cert is missing the configured hostname, it is automatically regenerated. The "Regenerate" button in Settings also benefits from this fix
๐จ Improvements โ
- scheduler:
scheduler.refresh()is now fire-and-forget at all call sites (job create/update/delete, config-backup settings save, system-task API). The DB write completes and the response is returned to the browser immediately, the scheduler rebuilds its task list in the background. This eliminates the UI hang that some users noticed when saving settings
๐ง CI/CD โ
- docker: Added a BuildKit cache mount (
--mount=type=cache,target=/app/.next/cache) to the builder stage in the Dockerfile. Combined with the existingtype=gha,mode=maxlayer cache in the release workflow, Next.js reuses its webpack/SWC artefacts for unchanged modules between releases - cutting image build times significantly
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.8 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.4.7 - PostgreSQL Compression, MSSQL Dump Fixes & Docker Metadata โ
Released: April 22, 2026
โจ Features โ
- postgresql: Added per-job native PostgreSQL dump compression. Jobs with a PostgreSQL source now expose an "Algorithm" selector (Legacy Gzip-6, None, Gzip, LZ4, ZSTD) and a "Level" input under the Security tab. The selection maps directly to
pg_dump -Z, allowing e.g.-Z zstd:3or-Z lz4:1without modifying the source adapter config (#24)
๐ Bug Fixes โ
- postgresql: Fixed hardcoded
-Z 6in the PostgreSQL dump adapter. Previously,pg_dumpalways ran with Gzip level 6 regardless of the job's compression setting, resulting in silent double-compression when pipeline Gzip or Brotli was enabled. The adapter now derives the-Zflag from the job'spgCompressionsetting (legacy jobs are unaffected) (#24) - mssql: Fixed
Dump failed: No database specified for backupwhen no databases were selected in the job. The MSSQL adapter now auto-discovers all user databases (matching the behavior of MySQL/PostgreSQL adapters) instead of aborting (#30) - backup: Fixed all database adapters (MySQL, PostgreSQL, MSSQL, etc.) only backing up one database when no explicit selection was made in the job config. The source config's default
databasefield was leaking through and overriding the intended "backup all" behavior (#30)
๐ง CI/CD โ
- docker: Added
lz4andzstdAlpine packages to the base image so thatpg_dump(postgresql18-client) can use LZ4 and ZSTD native compression at runtime - docker: Added OCI standard labels to Docker image (
title,description,url,source,version,revision,created,licenses,vendor) viadocker/metadata-action@v5for better registry compatibility and dependency bot integration (#27) - Thanks @Erwan-loot - codecov: Added Codecov integration -
codecov.yml,@vitest/coverage-v8,test:coveragescript, lcov reporter invitest.config.ts, and coverage upload step invalidate.ymlusing OIDC (no token secret required)
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.7 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.4.6 - Issue Templates and extension corrections โ
Released: April 19, 2026
๐ Changed โ
- backup: Multi-database backups now use
.tarfile extension instead of the adapter-specific extension (e.g..sql), correctly reflecting the TAR archive format (#25)
๐ง CI/CD โ
- github: Added GitHub Issue templates for Bug Reports, Feature Requests, Questions/Support, and Documentation Issues
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.6 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.4.5 - SSH Backup Fixes with single database selection โ
Released: April 19, 2026
๐ Bug Fixes โ
- postgres: Fixed single-database backups via SSH running
pg_dumplocally instead of on the remote server, causing "Connection refused" errors (#22) - mongodb: Fixed same SSH bypass bug for single-database
mongodumpbackups
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.5 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.4.4 - HTTPS Redirect Loop Fix โ
Released: April 18, 2026
๐ Bug Fixes โ
- auth: Fixed infinite redirect loop (ERR_TOO_MANY_REDIRECTS) after login in Docker/HTTPS mode caused by middleware not recognizing the
__Secure-cookie prefix that browsers set for HTTPS sessions
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.4 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.4.3 - TypeScript Migration, Prisma Upgrade & Security Fixes โ
Released: April 5, 2026
๐จ Improvements โ
- server: Converted
custom-server.jsto TypeScript (custom-server.ts) for consistent type safety across the codebase - compiled to JS during Docker build via dedicatedtsconfig.server.json
๐ Changed โ
- database: Upgraded Prisma ORM from v5 to v6 (v6.19.3) for continued security patches and bug fixes
- SSO: Migrated SSO credential decryption from deprecated
$usemiddleware to$extendsquery extension API - auth: Upgraded better-auth from v1.4.17 to v1.5.6 with SSO hardening, Prisma adapter fixes, and security improvements
- dependencies: Updated all patch/minor dependencies - Next.js, React, Tailwind CSS, Zod, AWS SDK, Vitest and 20+ other packages
๐๏ธ Removed โ
- auth: Removed deprecated
@better-auth/clipackage (replaced bynpx authCLI)
๐ง CI/CD โ
- Docker: Prisma CLI version in Dockerfile is now dynamically read from
package.jsonat build time instead of being hardcoded, ensuring automatic version sync
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.3 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.4.2 - Security Fixes โ
Released: April 2, 2026
๐ Security โ
- OneDrive: Fixed polynomial ReDoS vulnerability (CWE-1333) in folder path sanitization by replacing regex with iterative string trimming
- CI/CD: Added explicit
permissions: contents: readtosync-gitlab.ymlandvalidate.ymlworkflows to restrict defaultGITHUB_TOKENprivileges (CWE-275) - Google Drive: Fixed incomplete string escaping in query builder - backslashes are now escaped before single quotes to prevent query injection (CWE-20, CWE-116)
- API Keys: Upgraded hash from SHA-256 to scrypt (N=16384, r=8, p=1) with automatic migration for existing keys (CWE-916)
- Filesystem API: Expanded blocked-prefix list for sensitive system paths - now covers Linux (
/proc,/sys,/dev), macOS (/System,/Library/Keychains), and Windows WSL paths with dedicatedsanitizePath()validation (CWE-22) - TAR Extraction: Added Zip Slip protection in multi-DB TAR extraction using
path.basename()validation (CWE-22) - MSSQL Restore: Added Zip Slip protection in MSSQL TAR extraction using
path.basename()validation (CWE-22) - TLS Server: Removed environment-derived path from log output to prevent clear-text logging of sensitive directory info (CWE-532)
๐งช Tests โ
- Lint Guards: Fixed incomplete regex escaping in glob-to-regex conversion for
no-consoleandno-config-anytest helpers (CWE-116) - API Keys: Added unit tests for scrypt hashing, deterministic hash output, SHA-256 legacy migration path, and scrypt-is-not-SHA-256 verification
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.2 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.4.1 - PostgreSQL Client Cleanup โ
Released: April 2, 2026
๐จ Improvements โ
- PostgreSQL: Restore warning for PostgreSQL โค 16 now explains that
SET transaction_timeoutis a cosmetic pg_restore 18 issue and does not affect the restore - codebase: Replaced all em dashes with hyphens across source code, docs, and config files for typographic consistency
๐๏ธ Removed โ
- PostgreSQL: Removed multi-version pg_dump/pg_restore strategy (PG 14, 16, 17, 18) - only PostgreSQL 18 client is now installed, which is backward compatible with all supported server versions (12โ18)
๐ง CI/CD โ
- Docker: Simplified Dockerfile by removing postgresql14/16/17-client packages and multi-version symlink setup, reducing image size
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.1 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.4.0 - Live History Redesign โ
Released: March 31, 2026
โจ Features โ
- logging: Pipeline stage system for backups (Queued โ Initializing โ Dumping โ Processing โ Uploading โ Verifying โ Retention โ Notifications โ Completed) and restores (Downloading โ Decrypting โ Decompressing โ Restoring Database โ Completed) with automatic progress calculation and duration tracking per stage
- ui: LogViewer redesign with pipeline stage grouping, duration badges, pending stage placeholders, and auto-expanding latest stage during execution
- ui: Real-time speed (MB/s) and byte progress display for all backup and restore operations - dump, compress, encrypt, upload, download, decrypt, decompress, and SFTP transfer
๐จ Improvements โ
- logging: MongoDB adapter now buffers stderr output and emits it as a single structured log entry instead of flooding the log with individual lines
- logging: SQLite adapter logs now use typed log levels for consistent display
- storage: Google Drive adapter now reports intermediate upload progress instead of only 100% at completion
- storage: Download progress tracking added to S3, SFTP, Google Drive, OneDrive, WebDAV, and FTP adapters for restore operations
- restore: MySQL/MariaDB SSH restore now shows SFTP upload progress with real-time byte tracking
๐ Bug Fixes โ
- storage: Fixed local filesystem adapter logging "Preparing local destination" twice per upload
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.4.0 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.3.0 - SSH Remote Execution โ
Released: March 29, 2026
โจ Features โ
- ssh: SSH remote execution mode for MySQL, MariaDB, PostgreSQL, MongoDB and Redis - database tools (mysqldump, pg_dump, mongodump, redis-cli) run directly on the remote host via SSH instead of requiring a local client or SSH tunnel
- ssh: New shared SSH infrastructure (
src/lib/ssh/) with reusable client, shell escaping, remote binary detection, and per-adapter argument builders - ssh: Generic SSH connection test endpoint - "Test SSH" button now works for all SSH-capable adapters, not just MSSQL
- ui: SSH configuration tab in the source editor for all SSH-capable database adapters (MySQL, MariaDB, PostgreSQL, MongoDB, Redis) with connection mode selector
- sqlite: Added "Test SSH Connection" button to the SQLite SSH configuration tab, matching all other SSH-capable adapters
๐ Bug Fixes โ
- backup: MySQL, PostgreSQL, and MongoDB backup jobs with no database selected now auto-discover all databases at runtime - MySQL no longer fails with "No database specified", PostgreSQL no longer defaults to the username as database name, and MongoDB SSH listing was fixed by switching
mongosh --evalto single quotes to prevent bash!history expansion from silently corrupting the command, backup metadata is now correctly populated for restore mapping. - restore: Restore page no longer shows SQLite-style "Overwrite / Restore as New" UI for server-based adapters - now shows a target database name input when database names are unknown, and auto-discovers database names in backup metadata for future backups
- ssh: Fixed MySQL/MongoDB SSH restore not consuming stdout, which could cause backpressure and hang/crash the remote process
- restore: Fixed MySQL SSH restore crashing the Node.js process with OOM (16 GB heap) when restoring large databases - stderr log output is now rate-limited (max 50 messages, 500 chars each) to prevent unbounded memory growth
- restore: Fixed MySQL restore via SSH failing with "Server has gone away" on large dumps -
mysqlclient now uses--max-allowed-packet=64Mto handle large legacy INSERT statements - backup: Fixed MySQL dump producing huge INSERT statements that cause OOM kills on remote servers during restore -
mysqldumpnow uses--net-buffer-length=16384to limit each INSERT to ~16 KB, andmysqlclient--max-allowed-packetreduced from 512M to 64M to minimize client memory allocatione - ui: Fixed Download Link modal overflowing the viewport when a link is generated - dialog now has a max height and scrollable body
- ui: Fixed Job Status donut chart legend breaking to multiple lines with uneven layout when 3+ statuses (e.g. Completed, Failed, Cancelled) are shown - legend items now flow naturally and stay centered
๐ Security โ
- ssh: Fixed database passwords (MYSQL_PWD, PGPASSWORD) being exposed in execution logs when a remote process is killed by OOM or signal -
remoteEnv()now usesexportstatements instead of inline env var prefix, and the MySQL stderr handler redacts known secrets from all output
๐จ Improvements โ
- ui: Redesigned source form for SSH-capable adapters - Connection Mode selector now appears first (like SQLite), SSH Connection tab is shown first in SSH mode so users configure SSH before database credentials
- ui: Restore page now shows skeleton loading while target databases are fetched via SSH - version compatibility, database mapping, and action buttons are blocked until loading completes
- ui: Sources and Destinations pages now auto-refresh every 10 seconds to keep health status up to date
- sqlite: Refactored SQLite SSH client into shared SSH module for code reuse across all database adapters
- sqlite: SQLite SSH connection test now uses
remoteBinaryCheck()from the shared SSH library instead of manual binary checks,try/finallypattern ensures SSH connections are always closed, exit code null handling fixed in dump
๐ Documentation โ
- wiki: Updated all database source guides (MySQL, MariaDB, PostgreSQL, MongoDB, Redis) with SSH mode configuration, prerequisites, setup guides, and troubleshooting
- wiki: New "Connection Modes" overview section on the Sources index page explaining Direct vs SSH mode and shared SSH config fields
- wiki: Added SSH remote execution architecture section to the Developer Guide (database adapters, adapter system, architecture)
- wiki: Each adapter guide now lists required CLI tools for the remote host with installation commands per OS
๐งช Tests โ
- ssh: Added 60 unit tests for shared SSH utilities covering shell escaping, environment variable export, SSH mode detection, config extraction, and argument builders for MySQL, PostgreSQL, MongoDB, and Redis
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.3.0 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.2.1 - Execution Cancellation, MSSQL Progress & Dashboard Polish โ
Released: March 26, 2026
โจ Features โ
- execution: Cancel running or pending executions from the live log dialog - a "Cancel" button now appears in the execution header when a backup or restore is in progress
- execution: New
Cancelledstatus for executions - cancelled jobs are cleanly marked with proper log entries instead of showing as failed
๐ Bug Fixes โ
- mssql: Fixed Database Explorer and Restore page showing 0 databases for MSSQL sources - replaced global singleton connection pool (
sql.connect()) with independent per-operation pools (new ConnectionPool()) to prevent concurrent requests from closing each other's connections - mssql: Fixed large database backups/restores hanging and timing out -
BACKUP DATABASEandRESTORE DATABASEqueries now run without request timeout (previously limited to 5 minutes, causing failures on databases >5 GB) - explorer: Fixed Database Explorer not displaying server version - removed broken parallel
test-connectioncall and now uses version info returned bydatabase-statsendpoint
๐จ Improvements โ
- mssql: SQL Server progress messages (e.g. "10 percent processed") are now streamed to the execution log in real-time instead of only appearing after the backup/restore completes
- dashboard: All dashboard widgets (activity chart, job status donut, latest jobs list) now display the
Cancelledstatus with a neutral gray color
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.2.1 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.2.0 - HTTPS by Default, Certificate Management & Per-Adapter Health Notifications โ
Released: March 25, 2026
โ ๏ธ Breaking: Volume mounts have changed. Replace
./db:/app/dband./storage:/app/storagewith a single./data:/datamount. Then move the current data to the new structure after first startup. UpdateBETTER_AUTH_URLtohttps://- HTTPS is now the default protocol. SetDISABLE_HTTPS=trueif you use a TLS-terminating reverse proxy but its not recommended in terms of security.
โจ Features โ
- notifications: Per-adapter health check notification opt-out - sources and destinations can individually disable offline/recovery alerts via a toggle in the Configuration tab while health checks continue running
- security: Built-in HTTPS support - DBackup now defaults to HTTPS with an auto-generated self-signed certificate on first start, protecting all traffic including database passwords, encryption keys, and session cookies
- security: Certificate management UI - new "Certificate" tab in System Settings to view certificate details (issuer, expiry, fingerprint), upload custom PEM certificates, or regenerate self-signed certs
- security: HSTS header - when accessed via HTTPS, DBackup now sends
Strict-Transport-Securityto enforce future HTTPS connections in the browser - security: Auto-renewal for self-signed certificates - expired self-signed certs are automatically regenerated on container start, custom certificates are never replaced, only a warning is logged
๐ Changed โ
- server: Default protocol changed from HTTP to HTTPS - set
DISABLE_HTTPS=trueto use plain HTTP (e.g. behind a TLS-terminating reverse proxy) - docker: Consolidated volume mounts into single
/datadirectory - replaces separate/app/db,/app/storagemounts with one./data:/datamount containingdb/,storage/, andcerts/subdirectories./backupsremains a separate optional mount for local backups
๐จ Improvements โ
- ui: Edit Configuration dialog now uses Shadcn ScrollArea instead of native browser overflow for consistent scrollbar styling
๐งช Tests โ
- security: Added 21 unit tests for
certificate-servicecovering certificate info parsing, upload validation (PEM format, cert-key matching, temp file cleanup), self-signed regeneration, and HTTPS toggle
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.2.0 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.1.0 - Notification System Expansion & UI Improvements โ
Released: March 24, 2026
โจ Features โ
- notifications: New "Connection Offline" system notification event - sends an alert when a source or destination becomes unreachable after repeated health check failures, with configurable repeat reminder (default 24h)
- notifications: New "Connection Recovered" system notification event - sends an alert when a previously offline source or destination becomes reachable again, including downtime duration
๐จ Improvements โ
- ui: Empty state on Settings โ Notifications now links directly to the Notifications page to create an adapter
- ui: Redesigned permission picker for API Key and Group dialogs - replaced cramped scroll area with a spacious 3-column category card grid, global select/deselect all, and per-category count badges for much better overview
๐ Documentation โ
- docs: Added "No Vendor Lock-In" messaging to README and Wiki - highlights that backups are standard dumps, decryptable offline with the Recovery Kit and a standalone script
๐งช Tests โ
- notifications: Updated event count assertions to match new health check events (14 event types, 12 system event definitions, added
healthcategory) - runner: Fixed "Closing rpc while fetch was pending" CI failure in notification-logic tests - added missing mocks for
dashboard-serviceandnotification-log-serviceto prevent unresolved dynamic imports during test teardown
๐ง CI/CD โ
- pipeline: Added Wiki Build stage to validate workflow - ensures the VitePress documentation builds without errors on every PR
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.1.0 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.0.7 - PostgreSQL Version Mismatch Fix & Docker Build Validation โ
Released: March 22, 2026
๐ Bug Fixes โ
- PostgreSQL: Fixed pg_dump version mismatch in Docker container - PostgreSQL 17 backups failed because
postgresql17-clientandpostgresql18-clientwere not installed, causing fallback to pg_dump 16
๐ง CI/CD โ
- Docker: Added build-time validation for all pg_dump versions - Docker build now fails immediately if any PostgreSQL client binary is missing or has the wrong version
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.0.7 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.0.6 - Quick Setup fix & Developer Tooling โ
Released: March 22, 2026
โจ Features โ
- UI: Documentation menu in the profile dropdown now expands into a submenu with three options: Dokumentation (external docs), API Docs Local (
/docs/api), and API Docs Remote (api.dbackup.app)Note: Dokumentation link updated to
docs.dbackup.appin this release
๐ Bug Fixes โ
- quick-setup: Added missing database selection picker to the job step for adapters that support it (MySQL, MariaDB, PostgreSQL, MongoDB, MSSQL)
๐ Documentation โ
- README: Replaced static dashboard screenshot with demo video showcasing backup and restore workflow
- README: Redesigned Features section with categorized subsections, icons, and unique selling points (selective DB backup, live progress, system notifications, UI simplicity)
- wiki: Added demo video to the documentation homepage
- API Docs: Fixed DBackup Support link - now points to community support page instead of non-functional email
๐ง CI/CD โ
- scripts: Added
sync-version.shscript andpnpm version:sync/pnpm version:bump <patch|minor|major>commands to sync version across all files automatically
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.0.6 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.0.5 - Docker Permissions & Environment Variables โ
Released: March 20, 2026
โจ Features โ
- Docker: Configurable
PUID/PGIDenvironment variables (default:1001) - the entrypoint adjusts the runtime user at startup to match host volume permissions
๐จ Improvements โ
- Dockerfile: Dedicated
docker-entrypoint.shreplaces inline CMD - validatesPUID/PGID, conditionally chowns/pnpmonly when ownership differs, and runsnodeas PID 1 for proper signal handling - Dockerfile: Global Prisma CLI pinned to exact version (
5.22.0) matchingpackage.jsonto prevent version drift - Dockerfile: Merged Prisma generate and Next.js build into a single layer, consistent
--chown=1001:1001on all COPY directives
๐ Documentation โ
- wiki: Documented
PUID/PGIDenvironment variables in the environment reference
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.0.5 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.0.4 - Hotfix Release โ
Released: March 20, 2026
๐ Bug Fixes โ
- Dockerfile: Fixed container crash on startup (
Can't write to @prisma/engines) caused by globally installed Prisma being owned by root instead of the runtime user
๐ง CI/CD โ
- pipeline: Added build verification job to release workflow - starts the built image and polls
/api/healthbefore publishing, catching runtime permission and startup failures
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.0.4 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.0.3 - Docker Optimization & MSSQL Improvements โ
Released: March 19, 2026
๐ Bug Fixes โ
- MSSQL: Backup and restore errors now show the actual SQL Server cause instead of only "terminating abnormally" by extracting preceding error messages
- MSSQL: Database Explorer now correctly shows table counts by querying each database individually instead of using a broken cross-database
INFORMATION_SCHEMAsubquery
๐จ Improvements โ
- Dockerfile: Global Prisma install switched from
npmtopnpmfor consistency and smaller image size - Dockerfile: corepack activated in the base stage so all build stages inherit pnpm without reinstalling
- Dockerfile: Build now uses
pnpm run buildandpnpm prisma generateconsistently instead ofnpm/npx - Dockerfile: Combined base-stage RUN layers (corepack + PG symlinks), added
COPY --linkfor layer-independent caching, merged runner RUN layers, and added pnpm store mount-cache for faster dependency installs - Dockerfile:
.dockerignoreextended to excludewiki/,api-docs/,README.md, andLICENSEto reduce build context size
๐ CI/CD โ
- pipeline: GitHub Releases are now auto-generated from
wiki/changelog.mdon every version tag push - no manual copy-paste required - pipeline: Removed QEMU from Docker builds - amd64 and arm64 now build natively on their respective GitHub runners
- pipeline: Switched Docker layer cache from GHCR registry to GitHub Actions cache for faster cache hits
- Dockerfile: Fixed ARM64 build failure (
invalid user index: -1) by using numeric UID/GID (1001:1001) instead of user/group names inCOPY --link --chowndirectives
๐ Documentation โ
- wiki: New user guide article - Encryption Key: explains what
ENCRYPTION_KEYprotects, what happens when the key is lost or mismatched, and recovery options
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.0.3 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.0.2 - Cleanup & File Extension Fix โ
Released: March 17, 2026
๐ Bug Fixes โ
- backup: Backup files now use adapter-specific extensions (
.bak,.archive,.rdb,.db) instead of always.sql - restore: "Existing Databases" panel now scrolls correctly when the target server has many databases
๐จ Improvements โ
- codebase: Removed unused components, dead exports, stale commented-out code, and empty directories
- codebase: Removed unused
ServiceResultpattern file and its advisory lint test - ui: API Trigger dialog "Overview" tab now shows the correct
successfield in the trigger and poll JSON examples
๐ CI/CD โ
- pipeline: Migrated CI/CD from GitLab CI to GitHub Actions with parallel lint, type-check, and unit test jobs
- pipeline: Multi-arch Docker builds (amd64/arm64) now push to GHCR and Docker Hub with identical tag strategy
- GitLab: Added GitHub Action to mirror all branches and tags to GitLab for commit activity sync
๐ Documentation โ
- wiki: Complete overhaul of all adapter guides - unified structure, 4-column config tables verified against code, and collapsible provider examples
- wiki: Rewrote all 13 destination guides, 6 source guides, and 9 notification guides with accurate default values and required fields
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.0.2 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.0.1 - Hotfix Release & API Documentation โ
Released: March 14, 2026
๐ Bug Fixes โ
- ui: Mouse wheel now works in all
CommandList-based dropdowns (Radix ScrollArea bypass) - MSSQL: Backup failures now include actual SQL Server error messages instead of only "terminating abnormally"
- performance: Resolved multiple patterns causing app hangs - parallel health checks with 15s timeout, async MySQL CLI detection, async file I/O, adaptive history polling
๐ง CI/CD โ
- pipeline: Added
validatestage running lint, type-check, and tests in parallel before Docker builds - pipeline: Split single
docker buildxinto parallel amd64/arm64 jobs, combined viaimagetools create - Docker Hub: Automatically pushes README to Docker Hub on release with absolute image URLs
๐ Documentation โ
- API: Full OpenAPI 3.1 spec with interactive Scalar reference at
/docs/apiand api.dbackup.app - user guide: Getting Started rewritten and expanded into multi-page User Guide (Getting Started, First Steps, First Backup)
- README: Revised feature list, added Community & Support section with Discord, GitLab Issues, and contact emails
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.0.1 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v1.0.0 - First Stable Release โ
Released: March 10, 2026
๐ DBackup 1.0.0 - the first stable release. Stabilizes the platform after the beta phase with quality-of-life fixes, stale execution recovery, update notifications, and dashboard polish.
โ ๏ธ Breaking: All Prisma migrations squashed into a single
0_initmigration. Existing beta databases are not compatible. Export your config via Settings โ Config Backup before upgrading, then re-import afternpx prisma migrate deploy.
โจ Features โ
- sessions: Configurable session lifetime (1hโ90d), sessions tab in profile with browser/OS icons, revoke individual or all other sessions
- backup: Stale execution recovery - on startup, detects executions stuck in
Running/Pendingand marks them asFailed - notifications: Update notifications when a new version is detected, with deduplication and configurable reminder intervals (default: 7 days)
- notifications: Storage alerts and update notifications support repeat intervals (Disabled / 6h / 12h / 24h / 2d / 7d / 14d)
- jobs: Multi-destination fan-out - upload to unlimited storage destinations per job with per-destination retention policies and
Partialstatus - jobs: Database selection moved from Source config to Job form with multi-select
DatabasePicker - config backup: Enhanced import with statistics toggle, smart encryption recovery, name-based deduplication, and FK remapping
- validation: Sources, Jobs, Encryption Profiles, and Groups enforce unique names with HTTP 409 and descriptive toasts
๐ Security โ
- auth: Fixed middleware matcher to correctly apply rate limiting to authentication endpoints
- adapters: Strict Zod schemas reject shell metacharacters in adapter config fields (command injection prevention)
- MSSQL: Database name identifiers now properly escaped with bracket notation (SQL injection prevention)
- SSO:
clientIdandclientSecretencrypted at rest with AES-256-GCM
๐จ Improvements โ
- scheduler: New dual-mode schedule picker with Simple Mode (frequency pills + dropdowns) and Cron Mode with human-readable descriptions
- jobs: Form restructured into 4 tabs (General, Destinations, Security, Notify) with database picker and inline retention
- ui: Replaced orange pulsing update indicator with muted blue styling
๐ Bug Fixes โ
- Redis: Replaced incorrect multi-select database picker with 0โ15 dropdown
- ui: Fixed database icon showing red instead of yellow for
Pendingexecutions - API: Bash trigger script checks
success: truebefore parsing, documentedhistory:readrequirement - auth: Split rate limit module into Edge-safe and server-only to avoid
node:cryptoimport in Edge Runtime - config backup: Fixed 7 issues including missing Zod field, download crash, meta format detection, and FK violations
๐ณ Docker โ
- Image:
skyfay/dbackup:v1.0.0 - Also tagged as:
latest,v1 - Platforms: linux/amd64, linux/arm64
v0.9.9-beta - Storage Alerts, Notification Logs & Restore Improvements โ
Released: February 22, 2026
โจ Features โ
- restore: Backup compatibility matrix - pre-restore version check with green/orange/red banners and MSSQL edition guard
- MSSQL: SSH test button - tests SSH connectivity, backup path access, and write permissions
- restore: Dedicated restore page with 2-column layout, file details, database mapping, privileged auth, and version checks
- storage: Explorer with tabs (Explorer, History, Settings), side-by-side charts, and trend indicators
- storage: Three alert types (Usage Spike, Storage Limit, Missing Backup) with per-destination config and notification integration
- settings: Data retention settings - separate retention periods for Audit Logs and Storage Snapshots (7dโ5y)
- notifications: Notification log history with adapter-specific previews (Discord, Email, Slack, Telegram, Teams) and filterable table
๐จ Improvements โ
- email: Template redesign - Shadcn/UI style card layout with zinc palette, color-coded status badges, and dark mode support
- restore: Rich notification context with database type, storage name, backup filename, duration, and failure details
- backup: Selective TAR extraction - multi-database restores extract only selected databases, reducing I/O
- ui: Skeleton loading placeholders across Storage Explorer, History, and Database Explorer
- storage: Tab-aware refresh - refresh button reloads the active tab instead of always refreshing the file list
- ui: Database Explorer matches Storage Explorer's visual style with empty state cards
๐ Changed โ
- ui: Replaced Radix ScrollArea with native browser scrollbars across all components
๐ Bug Fixes โ
- setup: Fixed "Please select an adapter type first" error in Quick Setup adapter selection
- setup: Test Connection button now works in all Quick Setup steps
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.9-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.8-beta - Notification Adapters Expansion & Quick Setup Wizard โ
Released: February 20, 2026
โจ Features โ
- Slack: Incoming Webhooks with Block Kit formatting, color-coded attachments, channel override, and custom bot identity
- Teams: Power Automate Workflows with Adaptive Cards v1.4 and color mapping
- webhook: Generic webhook adapter - universal HTTP POST/PUT/PATCH with custom JSON templates, auth headers, and custom headers
- Gotify: Self-hosted push notifications with configurable priority levels and Markdown formatting
- ntfy: Topic-based push notifications (public or self-hosted) with priority escalation and emoji tags
- Telegram: Bot API with HTML formatting, flexible targets (chats, groups, channels), and silent mode
- Twilio: SMS alerts with concise formatting optimized for message length and E.164 phone numbers
- setup: Quick Setup Wizard - 7-step guided first-run (Source โ Destination โ Vault โ Notification โ Job โ Run)
- navigation: Grouped sidebar organized into General, Backup, Explorer, and Administration groups
๐ Documentation โ
- notifications: Per-channel setup guides for all 9 notification channels
๐ Bug Fixes โ
- scheduler: Enabling/disabling automated config backup now takes effect immediately without restart
- ui: Storage History button and Health History popover now respect user permissions
- API: Health History endpoint accepts either
sources:readordestinations:read
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.8-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.7-beta - API Keys, Webhook Triggers, Adapter Picker & Brand Icons โ
Released: February 20, 2026
โจ Features โ
- ui: Visual adapter picker - two-step create flow with card grid, search bar, and category tabs
- ui: Brand icons - multi-colored SVG logos via Iconify for all adapters, bundled offline for self-hosted deployments
- MSSQL: SSH/SFTP file transfer for accessing
.bakfiles on remote SQL Server hosts with automatic cleanup - MSSQL: Encryption and self-signed certificate toggles exposed in the UI
- restore: Database stats section showing target server databases with sizes, table counts, and conflict detection
- explorer: Database Explorer - standalone page to browse databases on any source with server overview and sortable stats
- auth: API key management - fine-grained permissions, expiration dates, secure storage, full lifecycle
- API: Webhook triggers - trigger backups via
POST /api/jobs/:id/runwith cURL, Bash, and Ansible examples - auth: Unified auth system - all API routes support both session cookies and API key Bearer tokens
- Docker: Health check - polls
/api/healthevery 30s returning app status, DB connectivity, and memory usage - auth: Configurable rate limits - per-category limits (Auth, API Read, API Write) with auto-save UI
- backup: Graceful shutdown - waits for running backups, freezes queue, stops scheduler, cleans up pending jobs
- storage: Grouped destination selector - adapters grouped into Local, Cloud Storage, Cloud Drives, and Network categories
- adapters:
getDatabasesWithStats()- all adapters expose database size and table/collection count - ui: Default port placeholders for MSSQL (1433), Redis (6379), and MariaDB (3306)
- config: Zod-based startup validation for environment variables with clear error messages
๐ Bug Fixes โ
- ui: Fixed
cmdkintercepting mouse wheel scroll events in dropdowns - ui: Fixed conditional form fields appearing before their controlling dropdown is selected
๐ Documentation โ
- wiki: API Reference, API Keys, Webhook Triggers, and Rate Limits guides
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.7-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.6-beta - Cloud Storage, Rsync & Notification System โ
Released: February 15, 2026
โจ Features โ
- notifications: System notification framework for user logins, account creation, restore results, and system errors with per-event toggles
- email: Multi-recipient tag/chip input with paste support for comma/semicolon-separated lists
- Google Drive: OAuth 2.0 with encrypted refresh tokens, visual folder browser, and resumable uploads
- Dropbox: OAuth 2.0 with visual folder browser and chunked uploads for files > 150 MB
- OneDrive: OAuth 2.0 for personal and organizational accounts with smart upload strategy
- rsync: Delta transfer via rsync over SSH with Password, Private Key, or SSH Agent auth
- storage: Usage history - area charts showing storage size over time (7dโ1y) with automatic hourly snapshots
๐ Security โ
- OAuth: Refresh tokens and client secrets encrypted at rest with AES-256-GCM
- rsync: Passwords passed via
SSHPASSenv var, never as CLI arguments
๐จ Improvements โ
- dashboard: Cached storage statistics served from DB cache instead of live API calls, auto-refreshed hourly
- storage: All storage adapters queried in parallel instead of sequentially
๐ Bug Fixes โ
- dashboard: Fixed Job Status chart stretching when many destinations are configured
- ui: Fixed missing adapter details for OneDrive, MariaDB, and MSSQL in tables
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.6-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.5-beta - Dashboard Overhaul, Checksums & Visual Analytics โ
Released: February 13, 2026
โจ Features โ
- backup: SHA-256 checksum verification - end-to-end integrity with checksums on backup, verification on restore, and optional weekly integrity check
- dashboard: Interactive dashboard with activity chart, job status donut, 7 KPI cards, latest jobs widget, and smart auto-refresh
- ui: Smart type filters - faceted filters on Sources, Destinations, and Notifications pages
- WebDAV: Nextcloud, ownCloud, Synology, and any WebDAV server support
- SMB: Windows servers and NAS devices with configurable protocol version and domain auth
- FTP: FTP/FTPS servers with optional TLS encryption
- storage: Per-destination overview widget with backup count and total size from live file scanning
๐ Bug Fixes โ
- backup: File size now reflects actual compressed/encrypted size instead of raw dump size
- ui: Fixed crash with relative date formatting in DateDisplay component
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.5-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.4-beta - Universal Download Links & Logging System โ
Released: February 6, 2026
โจ Features โ
- backup: wget/curl download links - temporary links with countdown timer, encrypted/decrypted format selection
- logging: Centralized logger with child loggers,
LOG_LEVELenv control, colored dev output (JSON in production) - errors: Custom error class hierarchy (
DBackupError,AdapterError,ServiceError, etc.) withwrapError()utilities - logging: API request middleware logging with method, path, duration, and anonymized IP
๐จ Improvements โ
- adapters: Type-safe adapter configs - all adapters use exported TypeScript types instead of
config: any - MongoDB: Connection test uses native
mongodbnpm package instead ofmongosh(Docker compatibility)
๐๏ธ Removed โ
- backup: Legacy multi-DB code - removed
pg_dumpall, MySQL--all-databases, and MongoDB multi-DB parsing (replaced by TAR in v0.9.1)
๐ Documentation โ
- wiki: Download tokens, Storage Explorer, and Logging System developer documentation
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.4-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.3-beta - Redis Support, Restore UX & Smart File Extensions โ
Released: February 2, 2026
โจ Features โ
- Redis: RDB snapshot backups for Redis 6/7/8 with Standalone & Sentinel mode, ACL auth, TLS, and database index selection
- Redis: 6-step restore wizard with secure download links (5-min expiry) and platform-specific instructions
- backup: Smart file extensions - adapter-specific extensions:
.sql,.bak,.archive,.rdb,.db - backup: Token-based downloads - secure, single-use download links (5-min expiry) for wget/curl without session cookies
- settings: User preferences - auto-redirect toggle for disabling automatic History page redirection on job start
- Docker Hub: Published at
skyfay/dbackupwith sensibleDATABASE_URLdefault,TZandTMPDIRsupport - config:
TRUSTED_ORIGINSenv var for multiple access URLs (comma-separated)
๐ Bug Fixes โ
- auth: Auth client correctly uses browser origin instead of hardcoded URL
๐ Documentation โ
- wiki: Consolidated installation guide with Docker Compose/Run tab switcher and environment variables audit
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.3-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.2-beta - Branding & Documentation โ
Released: February 1, 2026
โจ Features โ
- branding: Official DBackup logo with multi-resolution favicon support and brand integration (login, sidebar, browser tab)
- docs: Documentation portal launched at docs.dbackup.app with in-app link and Discord community
- SEO: Meta tags, Open Graph, Twitter Cards, and structured data
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.2-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.1-beta - Unified Multi-DB TAR Architecture โ
Released: February 1, 2026
โ ๏ธ Breaking: Multi-database backups now use TAR archives instead of inline SQL/dump streams. Old multi-DB backups cannot be restored with v0.9.1+. Single-database backups are not affected.
โจ Features โ
- backup: Unified TAR multi-DB format - all adapters use the same TAR format with
manifest.json, enabling selective restore and database renaming
๐จ Improvements โ
- PostgreSQL: Uses
pg_dump -Fcper database instead ofpg_dumpallfor smaller, parallel-ready backups - MongoDB: True multi-DB support with
--nsFrom/--nsTorenaming on restore
๐งช Tests โ
- integration: 84 integration tests - multi-DB tests, MSSQL test setup, Azure SQL Edge ARM64 skip
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.1-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.9.0-beta - Microsoft SQL Server & Self-Service Security โ
Released: January 31, 2026
โจ Features โ
- MSSQL: Full adapter with auto-detection of edition/version, multi-DB TAR backups, server-side compression, and parameterized queries
- auth: Password change from profile settings with audit logging
๐งช Tests โ
- testing: Stress test data generator, dedicated
testdbcontainer, and MSSQL/tmpcleanup
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.9.0-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.8.3-beta - Meta-Backups & System Task Control โ
Released: January 30, 2026
โจ Features โ
- config backup: Self-backup of app configuration (Users, Jobs, Settings) to storage adapters with full restore flow
- encryption: Profile portability - export/import secret keys for server migration with Smart Recovery
- settings: System task management - admins can enable/disable background tasks, config backup moved into standard scheduler
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.8.3-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.8.2-beta - Keycloak, Encryption Imports & Database Reset โ
Released: January 29, 2026
โ ๏ธ Breaking: Database schema consolidated into a single init migration. Delete existing
dev.dband let the app re-initialize. Data cannot be migrated automatically.
โจ Features โ
- SSO: Keycloak adapter - dedicated OIDC adapter with HTTPS enforcement
- encryption: Profile import for disaster recovery on fresh instances
๐จ Improvements โ
- auth: 2-step email-first login flow with tabbed SSO configuration UI
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.8.2-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.8.1-beta - SQLite Support & Remote File Browsing โ
Released: January 26, 2026
โจ Features โ
- SQLite: Backup local and remote (via SSH tunnel) SQLite databases with safe restore cleanup
- ui: Remote file browser for browsing local and SSH filesystems, integrated into adapter forms
- SFTP: Distinct Password and Private Key authentication options
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.8.1-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.8.0-beta - The First Beta โ
Released: January 25, 2026
๐ First official Beta with enterprise-ready features.
โจ Features โ
- SSO: Full OpenID Connect with Authentik, PocketID, and Generic providers including account linking and auto-provisioning
- S3: AWS S3 and compatible providers (MinIO, R2, etc.) via AWS SDK
- SFTP: Secure backup offloading to remote servers with connection testing
- audit: Comprehensive action tracking with IP, User Agent, change diffs, configurable retention, and faceted filtering
- MariaDB: Dedicated adapter with dialect handling
- adapters: Auto-detection of database version and dialect (MySQL 5.7 vs 8.0, etc.)
- system: Update checker - notifies admins when new versions are available
- adapters: Visual health history grid and badges for all adapters
๐ Security โ
- MySQL: Password handling switched to
MYSQL_PWDenvironment variable
๐งช Tests โ
- testing: Unit and integration tests for backup/restore pipelines, storage, notifications, and scheduler
๐ณ Docker โ
- Image:
skyfay/dbackup:v0.8.0-beta - Also tagged as:
beta - Platforms: linux/amd64, linux/arm64
v0.5.0-dev - RBAC System, Encryption Vault & Core Overhaul โ
Released: January 24, 2026
โจ Features โ
- auth: RBAC system - user groups with granular permissions, management UI, and protected SuperAdmin group
- encryption: Recovery kits - offline recovery kits for emergency decryption with master key reveal dialog
- backup: Native compression support integrated into UI and pipeline
- backup: Live progress tracking with indeterminate progress bars for streaming
- auth: API and authentication endpoint rate limiting
- auth: 2FA administration - admins can reset 2FA for locked-out users
๐จ Improvements โ
- backup: Pipeline architecture - job runner refactored into modular steps with dedicated service layer
- queue: Max 10 concurrent jobs with optimized MySQL/PostgreSQL streaming
- ui: DataTables with faceted filtering, Command-based Popovers, and Recovery Kit card UI