230 lines
4.1 KiB
Markdown
230 lines
4.1 KiB
Markdown
<p align="center">
|
||
<img src="images/dockervault-logo.png" width="600">
|
||
</p>
|
||
|
||
# DockerVault
|
||
|
||
> Intelligent Docker backup discovery for real systems
|
||
|
||
DockerVault scans your Docker environments and figures out **what actually matters to back up** — automatically.
|
||
|
||
No guesswork. No forgotten volumes. No broken restores.
|
||
|
||
---
|
||
|
||
## 📚 Contents
|
||
|
||
* [🚀 What is DockerVault?](#-what-is-dockervault)
|
||
* [🧠 Why DockerVault?](#-why-dockervault)
|
||
* [⚡ Quick Start](#-quick-start)
|
||
* [🛠 Tech Stack](#-tech-stack)
|
||
* [🔍 Example](#-example)
|
||
* [🧱 Current Features](#-current-features)
|
||
* [🔥 Roadmap](#-roadmap)
|
||
* [🧠 Philosophy](#-philosophy)
|
||
* [📜 License](#-license)
|
||
* [🤝 Contributing](#-contributing)
|
||
|
||
---
|
||
|
||
## 🚀 What is DockerVault?
|
||
|
||
DockerVault is a CLI tool that:
|
||
|
||
* Scans Docker Compose projects
|
||
* Parses services, volumes, env files
|
||
* Identifies **real data vs noise**
|
||
* Builds a structured backup understanding
|
||
|
||
Built for people running real systems — not toy setups.
|
||
|
||
---
|
||
|
||
## 🧠 Why DockerVault?
|
||
|
||
Most backup setups fail because:
|
||
|
||
* You forget a volume
|
||
* You miss an `.env` file
|
||
* You back up cache instead of data
|
||
* You don’t know what actually matters
|
||
|
||
DockerVault solves this by **thinking like an operator**.
|
||
|
||
---
|
||
|
||
## ⚡ Quick Start
|
||
|
||
```bash
|
||
git clone https://git.lanx.dk/ed/dockervault.git
|
||
cd dockervault
|
||
|
||
python3 -m venv .venv
|
||
source .venv/bin/activate
|
||
pip install -e .
|
||
|
||
dockervault scan /path/to/docker
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠 Tech Stack
|
||
|
||
DockerVault is built using simple, reliable components:
|
||
|
||
* **Python 3.10+** – core language
|
||
* **PyYAML** – parsing Docker Compose files
|
||
* **argparse** – CLI interface
|
||
* **pip / venv** – environment management
|
||
|
||
---
|
||
|
||
### 🔧 Designed for
|
||
|
||
* Linux systems (Ubuntu, Debian, Unraid environments)
|
||
* Docker Compose based setups
|
||
* CLI-first workflows
|
||
|
||
---
|
||
|
||
## 🔍 Example
|
||
|
||
```bash
|
||
dockervault scan ~/test-docker --json
|
||
```
|
||
|
||
```json
|
||
[
|
||
{
|
||
"name": "app2",
|
||
"services": [
|
||
{
|
||
"name": "app",
|
||
"image": "ghcr.io/example/app:latest",
|
||
"env_files": [".env"],
|
||
"mounts": [
|
||
"./data:/app/data",
|
||
"./config:/app/config"
|
||
]
|
||
}
|
||
],
|
||
"named_volumes": ["app_cache"]
|
||
}
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
## 🧱 Current Features
|
||
|
||
* CLI interface
|
||
* Recursive project scanning
|
||
* Docker Compose parsing (YAML)
|
||
* Service detection
|
||
* Volume + bind mount detection
|
||
* Environment file detection
|
||
|
||
---
|
||
|
||
## 🔥 Roadmap
|
||
|
||
### ✅ Phase 1 – Discovery
|
||
|
||
* [x] CLI
|
||
* [x] Scan command
|
||
* [x] YAML parsing
|
||
|
||
---
|
||
|
||
### 🚧 Phase 2 – Intelligence
|
||
|
||
* [ ] Classify mounts (data / config / cache)
|
||
* [ ] Detect backup candidates
|
||
* [ ] Generate backup plan
|
||
|
||
---
|
||
|
||
### 🔜 Phase 3 – Storage
|
||
|
||
* [ ] SQLite inventory
|
||
* [ ] Historical tracking
|
||
* [ ] Change detection
|
||
|
||
---
|
||
|
||
### 🔜 Phase 4 – Execution
|
||
|
||
* [ ] Borg integration
|
||
* [ ] Backup automation
|
||
* [ ] Restore validation
|
||
|
||
---
|
||
|
||
### 🔔 Phase 5 – Notifications & Monitoring
|
||
|
||
* [ ] Email notifications
|
||
* [ ] ntfy.sh integration
|
||
* [ ] Webhook support
|
||
* [ ] Alerts on:
|
||
|
||
* missing backups
|
||
* new volumes
|
||
* changed data paths
|
||
* [ ] Daily/weekly reports
|
||
|
||
---
|
||
|
||
### 🧠 Future Ideas
|
||
|
||
* [ ] Auto-detect Docker hosts on network
|
||
* [ ] Multi-node backup coordination (Lanx-style)
|
||
* [ ] Backup simulation ("what would be backed up?")
|
||
* [ ] Restore dry-run validation
|
||
* [ ] Tagging system (critical / optional / ignore)
|
||
|
||
---
|
||
|
||
## 🧠 Philosophy
|
||
|
||
DockerVault is built on a simple idea:
|
||
|
||
> Backups should be **correct by default**
|
||
|
||
Not configurable chaos.
|
||
|
||
Not guesswork.
|
||
|
||
But **system understanding**.
|
||
|
||
---
|
||
|
||
## 📜 License
|
||
|
||
This project is licensed under the **GNU General Public License v3.0 (GPL-3.0)**.
|
||
|
||
You are free to:
|
||
|
||
* Use the software
|
||
* Study and modify it
|
||
* Share and redistribute it
|
||
|
||
Under the condition that:
|
||
|
||
* Any derivative work must also be licensed under GPL-3.0
|
||
* Source code must be made available when distributed
|
||
|
||
See the full license in the [LICENSE](LICENSE) file.
|
||
|
||
---
|
||
|
||
## 🤝 Contributing
|
||
|
||
Feel free to contribute, suggest improvements or fork the project.
|
||
|
||
---
|
||
|
||
<p align="center">
|
||
Built with ❤️ for Lanx by NodeFox 🦊
|
||
Maintained by Eddie Nielsen & NodeFox 🦊
|
||
Feel free to contribute, suggest improvements or fork the project.
|
||
</p>
|