Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
87bded2
Add Firebird database adapter support
Skyfay Jul 4, 2026
2ee1411
Fix Firebird 3.x/4.x images for Apple Silicon compatibility
Skyfay Jul 4, 2026
8950920
Fix Firebird client setup across dev and CI
Skyfay Jul 4, 2026
63209c7
Fix Firebird isql/gbak resolution with fallbacks
Skyfay Jul 4, 2026
d89320d
Add Firebird database adapter icon
Skyfay Jul 4, 2026
c163cb9
Show Firebird connection summary in adapter list
Skyfay Jul 4, 2026
ceeac3c
Use Firebird paths for restore targets
Skyfay Jul 4, 2026
427c81b
Add Firebird browser support and stress seeding
Skyfay Jul 5, 2026
caa1b8b
Add key counts to Redis and Firebird explorer
Skyfay Jul 5, 2026
4e95503
Copy scripts with ownership from builder to runner
jpb0418 Jul 6, 2026
c493cbd
Fix SSH auth and Firebird SSH connection mode
Skyfay Jul 6, 2026
cff5311
Add standalone Next.js marketing website
Skyfay Jul 9, 2026
5f78d55
Revamp website UI with theming and tour
Skyfay Jul 9, 2026
d15d16e
Refresh website branding and homepage copy
Skyfay Jul 9, 2026
0fb87eb
Update website color palette to hue 256
Skyfay Jul 9, 2026
0edeb80
Add Claude launch config and tweak theme hues
Skyfay Jul 11, 2026
d1d270f
Refine website dark theme styling
Skyfay Jul 11, 2026
64a9c4a
Fix theme toggle hydration mismatch
Skyfay Jul 11, 2026
308cdd3
Add Shiki highlighting and copyable code blocks
Skyfay Jul 11, 2026
7670c7c
Improve blog code theming and author metadata
Skyfay Jul 11, 2026
e9f56a5
Reorder homepage sections for better flow
Skyfay Jul 11, 2026
d491637
Refine website product tour layout
Skyfay Jul 11, 2026
5bdd186
Polish integrations grid cards
Skyfay Jul 11, 2026
c93ba62
Add /roadmap page to website
Skyfay Jul 11, 2026
e1c998d
Consolidate website changelog entries
Skyfay Jul 11, 2026
11f6ab6
Update blog post date to 2026-07-10
Skyfay Jul 11, 2026
75fe889
Improve dark mode contrast for DB icons
Skyfay Jul 12, 2026
98df071
Refresh product tour screenshots and tabs
Skyfay Jul 12, 2026
3eaca61
Mark Firebird adapter as beta in picker
Skyfay Jul 12, 2026
03190af
Ignore Claude config and remove launch file
Skyfay Jul 12, 2026
e7aac2b
Copy scripts with ownership from builder to runner (#121)
Skyfay Jul 12, 2026
c51ae45
Fix decrypt script in Docker image
Skyfay Jul 12, 2026
ba3c543
Prepare v2.10.0 release metadata
Skyfay Jul 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@ pnpm-debug.log*
docs
tests
scripts
!scripts/decrypt_backup.js
coverage
wiki
api-docs
website
README.md
LICENSE
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ storage/avatars/*
# Jetbrains
.idea

# Claude Code local config
.claude

# VSCode
.vscode

Expand Down
45 changes: 45 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,49 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
rm /tmp/mongo-tools.deb && \
rm -rf /var/lib/apt/lists/*

# Step 5: Firebird 5.x client tools (gbak, isql) for the Firebird adapter.
# Debian 12's apt repos only carry a 3.0 client, not 5.x, and the 5.x gbak/isql
# can talk to 3.x/4.x servers over the wire protocol - so download the official
# Firebird release tarball and extract just the client binaries + shared library.
#
# Verified against the actual GitHub release assets (2026-07-04):
# - Release tag (v${FIREBIRD_RELEASE_TAG}) and asset filename version
# (${FIREBIRD_ASSET_VERSION}) differ - assets embed a build number, e.g.
# "Firebird-5.0.3.1683-0-linux-x64.tar.gz" for tag "v5.0.3". Bump both when
# upgrading.
# - The top-level tarball only contains an install.sh + a nested
# buildroot.tar.gz - the actual bin/lib payload lives at
# buildroot.tar.gz:./opt/firebird/{bin,lib}, not at the tarball root.
# - gbak/isql depend on libtommath.so.1 and gbak also needs libz.so.1, neither
# of which ship inside buildroot.tar.gz - installed via apt below.
# libicuuc/libicui18n are dlopen'd at runtime for extended collations only
# (soft dependency) - omitted here since backup/restore doesn't need them.
ARG FIREBIRD_RELEASE_TAG=5.0.3
ARG FIREBIRD_ASSET_VERSION=5.0.3.1683-0
RUN apt-get update && apt-get install -y --no-install-recommends \
libtommath1 \
zlib1g && \
rm -rf /var/lib/apt/lists/* && \
case "${TARGETARCH:-amd64}" in \
amd64) FB_ARCH="x64" ;; \
arm64) FB_ARCH="arm64" ;; \
*) echo "Unsupported architecture: ${TARGETARCH}"; exit 1 ;; \
esac && \
curl -fsSL "https://github.com/FirebirdSQL/firebird/releases/download/v${FIREBIRD_RELEASE_TAG}/Firebird-${FIREBIRD_ASSET_VERSION}-linux-${FB_ARCH}.tar.gz" -o /tmp/firebird.tar.gz && \
mkdir -p /tmp/firebird-extract && \
tar -xzf /tmp/firebird.tar.gz -C /tmp/firebird-extract --strip-components=1 && \
tar -xzf /tmp/firebird-extract/buildroot.tar.gz -C /tmp/firebird-extract && \
mkdir -p /opt/firebird/bin /opt/firebird/lib && \
cp /tmp/firebird-extract/opt/firebird/bin/gbak /opt/firebird/bin/ && \
cp /tmp/firebird-extract/opt/firebird/bin/isql /opt/firebird/bin/ && \
cp -a /tmp/firebird-extract/opt/firebird/lib/. /opt/firebird/lib/ && \
cp /tmp/firebird-extract/opt/firebird/firebird.msg /opt/firebird/ && \
ln -sf /opt/firebird/bin/gbak /usr/local/bin/gbak && \
ln -sf /opt/firebird/bin/isql /usr/local/bin/isql && \
echo "/opt/firebird/lib" > /etc/ld.so.conf.d/firebird.conf && \
ldconfig && \
rm -rf /tmp/firebird.tar.gz /tmp/firebird-extract

# Enable corepack for pnpm support and symlink PostgreSQL 18 binaries
# On Debian with PGDG, pg binaries live under /usr/lib/postgresql/18/bin/
RUN corepack enable && corepack prepare pnpm@10.29.3 --activate && \
Expand Down Expand Up @@ -94,6 +137,8 @@ RUN --mount=type=cache,id=next-cache,target=/app/.next/cache \
FROM base AS runner
WORKDIR /app

COPY --from=builder --link --chown=1001:1001 /app/scripts/decrypt_backup.js ./scripts/decrypt_backup.js

ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV PNPM_HOME="/pnpm"
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<a href="https://docs.dbackup.app/user-guide/getting-started">Quick Start</a> •
<a href="https://api.dbackup.app">API Reference</a> •
<a href="https://docs.dbackup.app/changelog">Changelog</a> •
<a href="https://docs.dbackup.app/roadmap">Roadmap</a>
<a href="https://dbackup.app/roadmap">Roadmap</a>
</p>


Expand Down Expand Up @@ -211,7 +211,7 @@ Full documentation is available at **[docs.dbackup.app](https://docs.dbackup.app
- [API Reference](https://api.dbackup.app) - Interactive REST API documentation
- [Developer Guide](https://docs.dbackup.app/developer-guide/) - Architecture, adapters, contributing
- [Changelog](https://docs.dbackup.app/changelog) - Release history
- [Roadmap](https://docs.dbackup.app/roadmap) - Planned features
- [Roadmap](https://dbackup.app/roadmap) - Planned features

## 🛠️ Development

Expand Down
2 changes: 1 addition & 1 deletion api-docs/openapi.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
openapi: 3.1.0
info:
title: DBackup API
version: 2.9.0
version: 2.10.0
description: |
REST API for DBackup - a self-hosted database backup automation platform with encryption, compression, and smart retention.

Expand Down
64 changes: 64 additions & 0 deletions docker-compose.test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -401,3 +401,67 @@ services:
interval: 5s
timeout: 5s
retries: 5

# ==========================================
# Firebird Family
# ==========================================
# Image: official firebirdsql/firebird (https://github.com/FirebirdSQL/firebird-docker)
# Verified against the project's README (2026-07-04): FIREBIRD_ROOT_PASSWORD sets
# SYSDBA's password, FIREBIRD_DATABASE creates the file under FIREBIRD_DATA
# (/var/lib/firebird/data), and the client binaries on PATH are named plain
# "isql"/"gbak" (not "isql-fb"). Firebird only ships official arm64 images from
# 5.x onward - 3.x/4.x are linux/amd64 only, hence the `platform:` overrides below.

# Firebird 3.0
# Platform: linux/amd64 required - Firebird only ships official arm64 images from 5.x onward,
# so 3.x/4.x run under Rosetta/QEMU emulation on Apple Silicon (slower, but fine for testing).
firebird-30:
image: firebirdsql/firebird:3.0.11
platform: linux/amd64
container_name: dbm-test-firebird-30
environment:
FIREBIRD_ROOT_PASSWORD: masterkey
FIREBIRD_DATABASE: testdb.fdb
FIREBIRD_USE_LEGACY_AUTH: "true"
ports:
- "31530:3050"
healthcheck:
test: ["CMD-SHELL", "isql -user sysdba -password masterkey /var/lib/firebird/data/testdb.fdb -i /dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 10
start_period: 20s

# Firebird 4.0
# Platform: linux/amd64 required for Apple Silicon (see note on firebird-30)
firebird-40:
image: firebirdsql/firebird:4.0.7
platform: linux/amd64
container_name: dbm-test-firebird-40
environment:
FIREBIRD_ROOT_PASSWORD: masterkey
FIREBIRD_DATABASE: testdb.fdb
ports:
- "31540:3050"
healthcheck:
test: ["CMD-SHELL", "isql -user sysdba -password masterkey /var/lib/firebird/data/testdb.fdb -i /dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 10
start_period: 20s

# Firebird 5.0 (Current)
firebird-50:
image: firebirdsql/firebird:5.0.3
container_name: dbm-test-firebird-50
environment:
FIREBIRD_ROOT_PASSWORD: masterkey
FIREBIRD_DATABASE: testdb.fdb
ports:
- "31550:3050"
healthcheck:
test: ["CMD-SHELL", "isql -user sysdba -password masterkey /var/lib/firebird/data/testdb.fdb -i /dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 10
start_period: 20s
3 changes: 2 additions & 1 deletion docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,8 @@ export default defineConfig({
{ text: 'Redis', link: '/user-guide/sources/redis' },
{ text: 'Valkey', link: '/user-guide/sources/valkey' },
{ text: 'SQLite', link: '/user-guide/sources/sqlite' },
{ text: 'Microsoft SQL Server', link: '/user-guide/sources/mssql' }
{ text: 'Microsoft SQL Server', link: '/user-guide/sources/mssql' },
{ text: 'Firebird', link: '/user-guide/sources/firebird' }
]
},
{
Expand Down
29 changes: 29 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,35 @@

All notable changes to DBackup are documented here.

## v2.10.0 - Firebird Support, New Website, and Multiple Bug Fixes
*Released: July 12, 2026*

### ✨ Features

- **Firebird**: Added Firebird (3.x/4.x/5.x) as a supported database source, with direct and SSH connection modes. Marked as Beta in the source type picker.
- **website**: Launched a new website at dbackup.app with a blog, roadmap page, and product tour.

### 🐛 Bug Fixes

- **Redis**: Database Explorer now shows a key count per database instead of always blank.
- **rsync**: Fixed SSH private-key destinations failing with "Too many authentication failures" when the local SSH agent has other keys loaded.
- **vault**: Recovery Kit downloads now include `decrypt_backup.js` instead of a missing-script warning. Thanks @jpb0418 ([#120](https://github.com/Skyfay/DBackup/issues/120))

### 🔧 CI/CD

- **scripts**: `generate-stress-data.sh` now also populates Redis and Firebird test containers.
- **scripts**: Added `test-vm-up.sh` / `test-vm-down.sh` / `seed-ssh-test-config.ts` and a `test:vm:delete` shortcut to test SSH-mode adapters against a real remote host via a Multipass VM.
- **scripts**: `test-vm-up.sh` now starts one container per database family instead of the full test matrix, to reduce VM memory usage.
- **scripts**: `test-vm-up.sh`/`seed-ssh-test-config.ts` now install MongoDB's client tools and seed MongoDB and Firebird SSH sources, MSSQL is left out for now as the heaviest container.

### 🐳 Docker

- **Image**: `skyfay/dbackup:v2.10.0`
- **Also tagged as**: `latest`, `v2`
- **CI Image**: `skyfay/dbackup:ci`
- **Platforms**: linux/amd64, linux/arm64


## v2.9.0 - Valkey Support, Storage Alert Fix, and Multiple Improvements
*Released: July 4, 2026*

Expand Down
3 changes: 3 additions & 0 deletions docs/developer-guide/adapters/database.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Database adapters handle the dump and restore operations for different database
| SQLite | `sqlite` | None (file copy) | ✅ | `.db` |
| MSSQL | `mssql` | None (TDS protocol) | ❌ (uses SFTP) | `.bak` |
| Redis | `redis` | `redis-cli` | ✅ | `.rdb` |
| Firebird | `firebird` | `gbak`, `isql` | ✅ | `.fbk` |

## Backup File Extensions

Expand All @@ -27,6 +28,7 @@ getBackupFileExtension("redis"); // "rdb"
getBackupFileExtension("mongodb"); // "archive"
getBackupFileExtension("sqlite"); // "db"
getBackupFileExtension("mssql"); // "bak"
getBackupFileExtension("firebird"); // "fbk"
```

### Extension Mapping
Expand All @@ -39,6 +41,7 @@ getBackupFileExtension("mssql"); // "bak"
| MongoDB | `.archive` | mongodump `--archive` format |
| Redis | `.rdb` | Redis Database snapshot format |
| SQLite | `.db` | Direct database file copy |
| Firebird | `.fbk` | Native `gbak` backup format |

### Final Filename Examples

Expand Down
1 change: 0 additions & 1 deletion docs/developer-guide/adapters/notification.md
Original file line number Diff line number Diff line change
Expand Up @@ -943,7 +943,6 @@ docs/
├── .vitepress/config.mts ← Sidebar entry
├── changelog.md ← Release notes
├── index.md ← Feature card + table
├── roadmap.md ← Mark as implemented (if listed)
└── developer-guide/
└── adapters/
└── notification.md ← Available Adapters table (this file)
Expand Down
1 change: 1 addition & 0 deletions docs/developer-guide/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Complete guide to setting up DBackup for development.
- `mysql` / `mysqldump` (MySQL/MariaDB)
- `psql` / `pg_dump` (PostgreSQL)
- `mongodump` / `mongorestore` (MongoDB)
- `gbak` / `isql` (Firebird) - see [`scripts/setup-dev-macos.sh`](https://github.com/Skyfay/DBackup/blob/main/scripts/setup-dev-macos.sh) for a scripted macOS install (no Homebrew formula exists)

### macOS Installation

Expand Down
2 changes: 1 addition & 1 deletion docs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "dbackup-docs",
"version": "2.9.0",
"version": "2.10.0",
"private": true,
"scripts": {
"dev": "vitepress dev",
Expand Down
Loading
Loading