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: 1. Scan Docker environment 2. Detect containers, volumes, bind mounts, and configs 3. Store metadata in SQLite 4. Build backup jobs from discovered data 5. Execute backups through Borg 6. 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 - `ntfy` notifications - 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: ```text 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