Online application-consistent backup and granular restore for HCL Domino / IBM Lotus Notes via the Domino C API (NSFBackupStart / NSFBackupStop), with transaction-log incrementals, PITR via NSFRecoverDatabases, granular restore by mailbox/UNID/NoteID, and NSF → EML/MBOX export. Status: Phase 0 (bootstrap) — pre-alpha.
Companion document to the PodHeitor Notes plugin page.
1. The problem: Bacula Enterprise has no Notes/Domino plugin
Verified in the field across Bacula Enterprise 6.2.x → 18.2.x manuals: no Notes/Domino plugin. Domino operators who need to integrate with Bacula fall back to:
- Raw filesystem backup of
.nsffiles in/local/notesdata/. Doesn’t work — NSF databases are open by the Domino server and in-flight changes produce inconsistent copies. - Server quiesce (stop Domino, back up, restart). A real maintenance window, email/collaboration unavailable.
- Proprietary solutions (NetBackup, Commvault, Spectrum Protect) with Domino agents — expensive, outside the Bacula world.
PodHeitor Notes addresses this via the Domino C API — online application-consistent, no quiesce, no downtime. This is the first such capability in the Bacula world.
2. Architectural model
┌──────────────────┐ load ┌─────────────────────┐ spawn ┌────────────────────────────┐
│ bacula-fd │ ──────> │ podheitor_notes_fd │ ──────> │ podheitor-notes-backend │
│ (Bacula AGPLv3) │ dlopen │ (Rust cdylib, │ PTCOMM │ (Rust sidecar) │
│ │ │ proprietary) │ │ │
└──────────────────┘ └─────────────────────┘ └────────────┬───────────────┘
│ dlopen
▼
┌──────────────────────────────┐
│ libnotes (HCL/IBM C API) │
│ operator-installed, │
│ NEVER vendored or shipped │
└──────────────────────────────┘
Pure-Rust cdylib + sidecar — no C/C++ shim, no statically-linked Bacula sources. AGPL-clean per ADR-001. libnotes is supplied by HCL/IBM and is never vendored or redistributed by the plugin — the operator installs the Notes SDK locally.
3. Planned capabilities (12-phase roadmap)
| Capability | Mechanism |
|---|---|
| Online Full backup of NSF databases | Domino C API NSFBackupStart / NSFBackupStop — no downtime, no quiesce |
| Transaction-log incrementals | True PITR — requires Domino archive transaction logging enabled |
| Differential backups | Delta from last Full |
| PITR restore | Log replay via NSFRecoverDatabases to arbitrary timestamp |
| Granular restore | Single mailbox, single document by UNID/NoteID/subject regex, single design element. ACLs preserved |
| NSF → EML/MBOX export | For ediscovery, legal hold, IMAP migration. (PST deferred to v1.1) |
| Verify / fixup / compact | Integrity gates |
| High parallelism | tokio + rayon hybrid; on-the-fly zstd compression |
4. Repository layout
| Component | Location | Role |
|---|---|---|
| cdylib | ../PodHeitor Rust cdylib/crates/plugin-notes/ |
Bacula plugin entry point, registers via metaplugin-rs |
| sidecar | ./backend-rs/ |
Drives libnotes, streams NSF + .txn over PTCOMM |
| docs | ./docs/ |
Operator guide, parameters, troubleshooting (Phase 11) |
| packaging | ./packaging/ |
rpm / deb / msi builds (Phase 11) |
5. License posture
Proprietary. The HCL/IBM Notes C API SDK is operator-installed; this project neither vendors nor redistributes any HCL/IBM bits.
Want to track development?
Free 30-day trial planned for the first alpha release (qualified Domino workloads). We guarantee at least 50% off vs Bacula Enterprise (which has no Notes plugin), Veeam, or Commvault, with more features — including granular per-document restore and EML/MBOX export.
Heitor Faria — Founder, PodHeitor International
✉ [email protected]
☎ +1 (789) 726-1749 · +55 (61) 98268-4220 (WhatsApp)
🔗 PodHeitor Notes plugin page
Disponível em:
Português (Portuguese (Brazil))
English
Español (Spanish)