docs: finalize README with logo and structure

This commit is contained in:
Eddie Nielsen 2026-03-21 22:37:01 +00:00
parent bd1dd0860c
commit ef7735d681

195
README.md
View file

@ -2,12 +2,30 @@
<img src="images/dockervault-logo.png" alt="DockerVault logo" width="840"> <img src="images/dockervault-logo.png" alt="DockerVault logo" width="840">
</p> </p>
<br>
<p align="center"> <p align="center">
<b>Simple, reliable backups for Docker environments.</b> <b>Simple, reliable backups for Docker environments.</b>
</p> </p>
--- ---
## 📑 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? ## 🚀 What is DockerVault?
DockerVault is a CLI-first backup system for Docker environments. DockerVault is a CLI-first backup system for Docker environments.
@ -22,12 +40,12 @@ DockerVault is aimed at homelabs, self-hosted infrastructure, and small-scale se
DockerVault is being built to: DockerVault is being built to:
- Discover Docker containers automatically * Discover Docker containers automatically
- Identify volumes, bind mounts, and relevant configuration data * Identify volumes, bind mounts, and relevant configuration data
- Keep track of backup history and metadata * Keep track of backup history and metadata
- Use a proven backup backend instead of reinventing backup logic * Use a proven backup backend instead of reinventing backup logic
- Make restore operations easier and safer * Make restore operations easier and safer
- Stay simple enough to understand and debug * Stay simple enough to understand and debug
--- ---
@ -37,18 +55,18 @@ DockerVault is planned as a modular, CLI-first tool.
### Current design direction ### Current design direction
- **Core language:** Python * **Core language:** Python
- **Backup engine:** BorgBackup * **Backup engine:** BorgBackup
- **Metadata storage:** SQLite * **Metadata storage:** SQLite
- **Interface:** CLI first * **Interface:** CLI first
- **Platform focus:** Linux Docker hosts * **Platform focus:** Linux Docker hosts
### Why this stack? ### Why this stack?
- **Python** makes it fast to build, maintain, and extend * **Python** makes it fast to build, maintain, and extend
- **BorgBackup** is mature, reliable, and well-suited for deduplicated backups * **BorgBackup** is mature, reliable, and well-suited for deduplicated backups
- **SQLite** keeps metadata simple, local, and easy to inspect * **SQLite** keeps metadata simple, local, and easy to inspect
- **CLI first** keeps the project transparent and easy to debug * **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. The project philosophy is clear: use proven tools where it makes sense, and avoid building complexity just for the sake of it.
@ -73,11 +91,11 @@ More detailed architecture notes will live in `docs/architecture.md`.
DockerVault is intended to focus on the parts of Docker environments that actually matter: DockerVault is intended to focus on the parts of Docker environments that actually matter:
- Docker volumes * Docker volumes
- Bind mounts * Bind mounts
- Selected configuration files * Selected configuration files
- Backup metadata * Backup metadata
- Restore-related information * 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. It is not intended to blindly copy everything without structure. The purpose is to know what is being backed up and why.
@ -89,12 +107,12 @@ Backups are only useful if restore is realistic.
DockerVault is being designed with restore in mind from the beginning: DockerVault is being designed with restore in mind from the beginning:
- Clear mapping between containers and stored data * Clear mapping between containers and stored data
- Metadata that explains what belongs to what * Metadata that explains relationships between services and data
- Predictable restore flow * Predictable restore flow
- Minimal guesswork during recovery * Minimal guesswork during recovery
The long-term goal is not just to create archives, but to support actual recovery when needed. The goal is not just to store backups, but to enable actual recovery.
--- ---
@ -102,81 +120,108 @@ The long-term goal is not just to create archives, but to support actual recover
### Core features ### Core features
- Docker container discovery * Docker container discovery
- Volume detection * Volume detection
- Bind mount detection * Bind mount detection
- Backup job creation * Backup job creation
- Borg-based backup execution * Borg-based backup execution
- SQLite-based metadata tracking * SQLite-based metadata tracking
- Restore workflow * Restore workflow
### Future possibilities ### Future possibilities
- Scheduled backups * Scheduled backups
- Retention policies * Retention policies
- Pre-backup and post-backup hooks * Pre/post backup hooks
- E-mail notifications * E-mail notifications
- `ntfy` notifications * `ntfy` notifications
- Web interface * Web interface
- Multi-node support * Multi-node support
- Remote repository support * Remote repository support
- Backup health/status reporting * Backup health/status reporting
- Configuration profiles * Configuration profiles
- Selective backup policies per container * Selective backup policies per container
--- ---
## 🛣 Roadmap ## 🛣 Roadmap
### Phase 1 Foundation ### Phase 1 Foundation
- Repository structure
- Documentation * Repository structure
- CLI skeleton * Documentation
- Initial project design * CLI skeleton
* Initial project design
### Phase 2 Discovery ### Phase 2 Discovery
- Scan Docker environment
- Detect containers * Scan Docker environment
- Detect volumes and bind mounts * Detect containers
* Detect volumes and bind mounts
### Phase 3 Backup Engine ### Phase 3 Backup Engine
- Integrate BorgBackup
- Build backup job flow * Integrate BorgBackup
- Store metadata in SQLite * Build backup job flow
* Store metadata in SQLite
### Phase 4 Restore ### Phase 4 Restore
- Basic restore workflow
- Restore metadata mapping * Basic restore workflow
- Safer recovery process * Restore metadata mapping
* Safer recovery process
### Phase 5 Usability ### Phase 5 Usability
- Better CLI commands
- Config handling * Better CLI commands
- Scheduling support * Config handling
- Notifications * Scheduling support
* Notifications
### Phase 6 Expansion ### Phase 6 Expansion
- Web interface
- Multi-node support * Web interface
- More advanced backup policies * Multi-node support
* Advanced backup policies
--- ---
## 📁 Project Structure ## 📁 Project Structure
Planned structure:
```text ```text
dockervault/ dockervault/
├── cmd/ # CLI commands ├── cmd/
├── core/ # core logic ├── core/
├── scanner/ # Docker discovery ├── scanner/
├── backup/ # backup engine integration ├── backup/
├── restore/ # restore logic ├── restore/
├── config/ # configuration handling ├── config/
├── database/ # SQLite handling ├── database/
├── docs/ # project documentation ├── docs/
├── scripts/ # helper scripts ├── scripts/
├── images/ # logos and visual assets ├── images/
├── README.md ├── README.md
└── LICENSE └── 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.
---
## 📜 License
This project is licensed under the **GNU General Public License v2.0**.
See the `LICENSE` file for details.