| images | ||
| LICENSE | ||
| README.md | ||
📑 Contents
- 🚀 What is DockerVault?
- ✨ Goals
- ⚙️ Technology
- 🏗 Architecture
- 📦 What DockerVault backs up
- 🔁 Restore philosophy
- 🧩 Planned Features
- 🛣 Roadmap
- 📁 Project Structure
- 🤝 Philosophy
- 📜 License
🚀 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 relationships between services and data
- Predictable restore flow
- Minimal guesswork during recovery
The goal is not just to store backups, but to enable actual recovery.
🧩 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/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
- Advanced backup policies
📁 Project Structure
dockervault/
├── cmd/
├── core/
├── scanner/
├── backup/
├── restore/
├── config/
├── database/
├── docs/
├── scripts/
├── images/
├── README.md
└── LICENSE
🤝 Philosophy
DockerVault is built on a few simple principles:
- Keep it simple
- Be transparent
- Avoid unnecessary complexity
- Prefer proven tools over hype
- Build something practical and maintainable
No magic. No hidden behavior. No unnecessary abstraction.
Author Built with ❤️ for Lanx by NodeFox 🦊
Maintained by Eddie Nielsen Feel free to contribute, suggest improvements or fork the project.
📜 License
This project is licensed under the GNU General Public License v2.0.
See the LICENSE file for details.