dockervault/README.md
2026-03-21 22:45:43 +00:00

229 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p align="center">
<img src="images/dockervault-logo.png" alt="DockerVault logo" width="600">
---
## 📑 Contents
* [🚀 What is DockerVault?](#-what-is-dockervault)
* [✨ Goals](#-goals)
* [⚙️ Technology](#-technology)
* [🏗 Architecture](#-architecture)
* [📦 What DockerVault backs up](#-what-dockervault-is-expected-to-back-up)
* [🔁 Restore philosophy](#-restore-philosophy)
* [🧩 Planned Features](#-planned-features)
* [🛣 Roadmap](#-roadmap)
* [📁 Project Structure](#-project-structure)
* [🤝 Philosophy](#-philosophy)
* [📜 License](#-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:
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 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
* `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
* Advanced backup policies
---
## 📁 Project Structure
```text
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.