4.5 KiB
Simple, reliable backups for Docker environments.
🚀 What is DockerVault?
DockerVault is a CLI-first backup system for Docker environments.
It is designed to make backups simple, transparent, and reliable without unnecessary complexity. The goal is to provide a practical way to discover containers, identify important data, and manage backups in a structured and predictable way.
DockerVault is aimed at homelabs, self-hosted infrastructure, and small-scale server environments where control, clarity, and recoverability matter.
✨ Goals
DockerVault is being built to:
- Discover Docker containers automatically
- Identify volumes, bind mounts, and relevant configuration data
- Keep track of backup history and metadata
- Use a proven backup backend instead of reinventing backup logic
- Make restore operations easier and safer
- Stay simple enough to understand and debug
⚙️ Technology
DockerVault is planned as a modular, CLI-first tool.
Current design direction
- Core language: Python
- Backup engine: BorgBackup
- Metadata storage: SQLite
- Interface: CLI first
- Platform focus: Linux Docker hosts
Why this stack?
- Python makes it fast to build, maintain, and extend
- BorgBackup is mature, reliable, and well-suited for deduplicated backups
- SQLite keeps metadata simple, local, and easy to inspect
- CLI first keeps the project transparent and easy to debug
The project philosophy is clear: use proven tools where it makes sense, and avoid building complexity just for the sake of it.
🏗 Architecture
DockerVault follows a simple flow:
- Scan Docker environment
- Detect containers, volumes, bind mounts, and configs
- Store metadata in SQLite
- Build backup jobs from discovered data
- Execute backups through Borg
- Restore data when needed
More detailed architecture notes will live in docs/architecture.md.
📦 What DockerVault is expected to back up
DockerVault is intended to focus on the parts of Docker environments that actually matter:
- Docker volumes
- Bind mounts
- Selected configuration files
- Backup metadata
- Restore-related information
It is not intended to blindly copy everything without structure. The purpose is to know what is being backed up and why.
🔁 Restore philosophy
Backups are only useful if restore is realistic.
DockerVault is being designed with restore in mind from the beginning:
- Clear mapping between containers and stored data
- Metadata that explains what belongs to what
- Predictable restore flow
- Minimal guesswork during recovery
The long-term goal is not just to create archives, but to support actual recovery when needed.
🧩 Planned Features
Core features
- Docker container discovery
- Volume detection
- Bind mount detection
- Backup job creation
- Borg-based backup execution
- SQLite-based metadata tracking
- Restore workflow
Future possibilities
- Scheduled backups
- Retention policies
- Pre-backup and post-backup hooks
- E-mail notifications
ntfynotifications- Web interface
- Multi-node support
- Remote repository support
- Backup health/status reporting
- Configuration profiles
- Selective backup policies per container
🛣 Roadmap
Phase 1 – Foundation
- Repository structure
- Documentation
- CLI skeleton
- Initial project design
Phase 2 – Discovery
- Scan Docker environment
- Detect containers
- Detect volumes and bind mounts
Phase 3 – Backup Engine
- Integrate BorgBackup
- Build backup job flow
- Store metadata in SQLite
Phase 4 – Restore
- Basic restore workflow
- Restore metadata mapping
- Safer recovery process
Phase 5 – Usability
- Better CLI commands
- Config handling
- Scheduling support
- Notifications
Phase 6 – Expansion
- Web interface
- Multi-node support
- More advanced backup policies
📁 Project Structure
Planned structure:
dockervault/
├── cmd/ # CLI commands
├── core/ # core logic
├── scanner/ # Docker discovery
├── backup/ # backup engine integration
├── restore/ # restore logic
├── config/ # configuration handling
├── database/ # SQLite handling
├── docs/ # project documentation
├── scripts/ # helper scripts
├── images/ # logos and visual assets
├── README.md
└── LICENSE