Skip to content

Releases: indhifarhandika/LunarDump

v0.2.0

Choose a tag to compare

@indhifarhandika indhifarhandika released this 31 Jul 00:20

🚀 LunarDump v0.2.0 Release Notes

We are excited to announce LunarDump v0.2.0! This release introduces a major new disaster recovery feature: Stream Integrity & Checksum Verification (lunardump restore --verify), along with seamless environment variable loading, uv package manager support, and improved configuration guidance.


🌟 What's New in v0.2.0

🛡️ Backup Integrity & Checksum Verification (--verify)

Ensuring that your encrypted database backups are uncorrupted, authentic, and decryptable before a real disaster strikes is crucial. With lunardump restore --verify, you can now validate your backup archives on-the-fly without restoring them to a live database or writing unencrypted data to disk.

  • AES-256-GCM Stream Validation: Authenticates header signatures (LUNARDUMP_V1), salt, nonces, and cryptographic authentication tags across every chunk.
  • Cryptographic Checksums: Generates instant SHA-256 and MD5 checksums of the unencrypted payload.
  • Zero-Disk Overhead: Performs verification entirely in memory (64KB chunks).
  • Direct Cloud Storage Verification: Verify remote backup archives stored in AWS S3, Google Cloud Storage, MinIO, or Cloudflare R2 without manual downloading.

Command Examples:

# 1. Verify local encrypted backup file
lunardump restore --file backup_20260730.enc --key secret.key --verify

# 2. Download and verify directly from Cloud Storage (S3 / GCS)
lunardump restore --config config.yaml --remote-key daily/mysql/backup_20260730.enc --verify

Verification Terminal Report:

                     LunarDump Backup Integrity & Verification Report                     
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Metric                   ┃ Details                                                              ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Backup Source            │ s3://company-db-backups/daily/mysql/backup_20260730.enc             │
│ Integrity Status         │ PASSED (AES-256-GCM Authenticated)                                   │
│ Decrypted Size           │ 14.28 MB (14,972,812 bytes)                                          │
│ SHA-256 Checksum         │ a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8       │
│ MD5 Checksum             │ c4ca4238a0b923820dcc509a6f75849b                                      │
│ Validated Chunks         │ 228 chunk(s)                                                         │
└━━━━━━━━━━━━━━━━━━━━━━━━━━┴━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘

✓ Backup file is authentic, uncorrupted, and ready for disaster recovery.

⚡ Improvements & Fixes

📦 Automatic .env Loading Across All Terminals

  • Added python-dotenv>=1.0.0 to core package dependencies.
  • Added automatic .env initialization at CLI entrypoint (lunardump/main.py), resolving environment variables seamlessly out-of-the-box.

⚡ Package Manager Support (uv & uvx)

  • Full support and documentation for installing LunarDump via uv:
    • Global CLI installation: uv tool install lunardump
    • One-off instant execution: uvx lunardump run --config config.yaml

📝 Enhanced Configuration & Guidance

  • Updated config.example.yaml and README.md with explicit comments for storage: provider options (S3, GCS, MinIO, R2, Local).
  • Added explanatory notes for notifications: channels (requires at least 1 channel, supports multi-channel notification setups).

📄 Full Changelog

  • feat(cli): Added --verify flag to restore command for integrity and checksum verification.
  • feat(cli): Added --remote-key and --config support to restore for direct cloud storage verification.
  • feat(security): Added verify_stream method in StreamCipher calculating SHA-256 & MD5 checksums.
  • fix(deps): Moved python-dotenv into core dependencies array in pyproject.toml.
  • docs: Added CONTRIBUTING.md, SECURITY.md, and updated config.example.yaml comments.

⚙️ Installation & Upgrade

Via pip:

pip install --upgrade lunardump

Via uv:

uv tool install --upgrade lunardump

Full Commit History & Repository: github.com/indhifarhandika/LunarDump

v0.1.2

Choose a tag to compare

@indhifarhandika indhifarhandika released this 29 Jul 14:34

add python-dotenv and fixing load env

v0.1.1

Choose a tag to compare

@indhifarhandika indhifarhandika released this 29 Jul 13:54
391521b

Fixing load env

v0.1.0

v0.1.0 Pre-release
Pre-release

Choose a tag to compare

@indhifarhandika indhifarhandika released this 29 Jul 04:51

🌖 LunarDump v0.1.0 — Initial Release

We are thrilled to announce the official initial release of LunarDump (v0.1.0)! 🎉

LunarDump is a lightweight, zero-trust CLI tool built in Python designed to automate, encrypt, and stream database backups directly to multi-cloud storage. This inaugural version lays down the core pipeline for secure, memory-efficient, and configuration-driven database disaster recovery.


✨ What's Included in v0.1.0

🗄️ Core Backup Engine & Driver

  • PostgreSQL Engine Support: Initial driver implementation using pg_dump with native streaming support to handle multi-gigabyte databases without memory spikes.

  • On-The-Fly Compression: Automatic compression of raw database dumps into .tar.gz archive streams prior to encryption.

🔐 Zero-Trust Security

  • AES-256-GCM Encryption: Local end-to-end symmetric encryption powered by the cryptography library. Data is encrypted before it leaves your server environment.

  • Zero-Leak Credentials: Safe environment variable loading via Pydantic v2 to ensure database passwords and API tokens are never leaked into logs or config files.

☁️ Cloud Storage Integration

  • AWS S3 & S3-Compatible Storage: Direct upload engine supporting AWS S3, Cloudflare R2, and local MinIO instances with multipart transfer callbacks.

  • Automated Retention Cleaner: Set custom retention policies (e.g., retain backups for 30 days) to automatically purge expired archives from cloud buckets.

🖥️ CLI UX & Telemetry

  • Modern CLI Built with Typer & Rich: Clean commands with interactive progress bars, formatted tables, and intuitive --help documentation.

  • Configuration Validation: Added lunardump config check command to test connectivity to your database, cloud storage, and webhooks prior to executing backups.

  • Telegram Webhook Alerts: Real-time event telemetry that posts success or failure notifications directly to your Telegram channel.


🚀 Quick Start

Installation

pip install lunardump

Usage

  1. Generate your initial configuration file or copy config.example.yaml:
lunardump config check --config config.yaml
  1. Execute the full backup pipeline:
lunardump run --config config.yaml

🛠️ Configuration Example (config.yaml)

version: "1.0"
backup:
  name: "prod-db-daily"
  database:
    type: "postgres"
    host: "localhost"
    port: 5432
    name: "production_db"
    user: "postgres"
    password_env: "DB_PASSWORD"

  security:
    encrypt: true
    algorithm: "aes-256-gcm"
    key_env: "LUNARDUMP_ENCRYPTION_KEY"

  storage:
    provider: "s3"
    bucket: "my-lunardump-backups"
    region: "ap-southeast-1"
    path: "daily/postgres/"
    retention_days: 30

  notifications:
    on_success: true
    on_failure: true
    channels:
      - type: "telegram"
        bot_token_env: "TELEGRAM_BOT_TOKEN"
        chat_id: "-100123456789"

❤️ Contributors & Feedback

Thank you to everyone testing and contributing to LunarDump! If you encounter any bugs or have feature requests, please open an issue on our [GitHub Issues](https://github.com/LunarDump/lunardump/issues) page.