docs: finalize README with logo and structure
This commit is contained in:
parent
bd1dd0860c
commit
ef7735d681
1 changed files with 120 additions and 75 deletions
195
README.md
195
README.md
|
|
@ -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.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue