<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>
