From 2a8d7fc8b721712cf4e703a0901dd208bf470216 Mon Sep 17 00:00:00 2001 From: Eddie Nielsen <“ed”@edcore.dk”> Date: Tue, 24 Mar 2026 14:42:26 +0000 Subject: [PATCH] release: DockerVault v0.1.0 --- README.md | 195 +++++++++++++++++++++------------------ dockervault/CHANGELOG.MD | 5 - main | 0 3 files changed, 105 insertions(+), 95 deletions(-) delete mode 100644 dockervault/CHANGELOG.MD create mode 100644 main diff --git a/README.md b/README.md index 5706558..8140118 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ > Intelligent Docker backup discovery for real systems -DockerVault scans your Docker environments and figures out what actually matters to back up — automatically. +DockerVault scans your Docker environments and figures out **what actually matters to back up** — automatically. No guesswork. No forgotten volumes. No broken restores. @@ -20,169 +20,184 @@ No guesswork. No forgotten volumes. No broken restores. * 🗂 Classification Model * 💾 Borg Integration * 🤖 Automation Mode -* 🔢 Exit Codes -* 🛠 Tech Stack * 🔍 Example +* 🛠 Tech Stack +* 🔢 Exit Codes * 🔥 Future Ideas -* 📜 License * ❤️ Credits +* 📜 License --- ## 🚀 What is DockerVault? -DockerVault is a CLI tool that scans Docker environments and determines what actually needs to be backed up. +DockerVault is a CLI tool that: -It understands: -- Docker Compose setups -- bind mounts -- named volumes -- service-specific data paths +* scans Docker Compose environments +* detects bind mounts and named volumes +* identifies **critical data paths** +* warns about missing or broken setups +* generates **ready-to-use Borg backup commands** -Instead of guessing, DockerVault builds a structured backup plan. +It focuses on **real-world setups**, not theoretical configs. --- ## ⚡ Quick Start +```bash git clone https://git.lanx.dk/ed/dockervault.git cd dockervault +python -m venv .venv +source .venv/bin/activate -python -m dockervault.cli scan /your/docker/root --repo /backup +pip install -r requirements.txt +``` + +Run a scan: + +```bash +python -m dockervault.cli /path/to/docker +``` + +Generate a Borg backup plan: + +```bash +python -m dockervault.cli /path/to/docker --repo /backup --dry-run +``` --- ## 🧠 How it Works -DockerVault works in layers: +DockerVault: -1. Scan for docker-compose.yml -2. Parse services and volumes -3. Resolve: - - bind mounts - - named volumes -4. Classify paths: - - critical - - review - - skip -5. Generate backup plan +1. Searches for Docker Compose files +2. Parses all services and mounts +3. Applies classification rules +4. Builds a structured backup plan + +It focuses on **what actually matters to restore a system**. --- ## 🗂 Classification Model -DockerVault sorts paths into: +DockerVault divides data into: -### INCLUDE (critical) -Must be backed up +### 🔴 Critical -Examples: -- /var/lib/mysql -- /data +Must be backed up: ---- +* databases (`/var/lib/mysql`, etc.) +* application data (`/data`, etc.) -### REVIEW -Needs human decision +### 🟡 Review -Examples: -- uploads -- config folders +Optional: ---- +* logs +* caches +* temporary files -### SKIP -Safe to ignore +### ⚪ Skip -Examples: -- logs -- cache -- temp data +Safe to ignore: + +* ephemeral runtime data --- ## 💾 Borg Integration -DockerVault can generate ready-to-use Borg commands: +DockerVault generates ready-to-use Borg commands: +```bash borg create --stats --progress \ - /backup-repo::{hostname}-{now:%Y-%m-%d_%H-%M} \ + /backup::hostname-YYYY-MM-DD_HH-MM \ /path1 \ /path2 +``` -This makes it easy to plug into: -- cron jobs -- scripts -- automation pipelines +No guessing. No missing volumes. --- ## 🤖 Automation Mode -python -m dockervault.cli scan /path --automation --quiet +DockerVault supports automation-friendly usage: -Designed for: -- scheduled backups -- CI/CD pipelines -- unattended systems +```bash +python -m dockervault.cli /path --repo /backup --automation --quiet +``` ---- +* exit code `0` → OK +* exit code `1` → missing critical paths -## 🔢 Exit Codes - -0 = Success -1 = Missing critical paths -2 = General error - ---- - -## 🛠 Tech Stack - -- Python 3 -- Docker Compose parsing -- Filesystem analysis -- Borg backup integration -- pytest (testing) +Perfect for cron jobs and monitoring. --- ## 🔍 Example +```text DockerVault Backup Plan ======================= +Scan root: /srv/docker INCLUDE PATHS: - - ./db [critical] - - ./mc [critical] + - /srv/docker/db [critical] service=db target=/var/lib/mysql + - /srv/docker/app/data [critical] service=app target=/data + +REVIEW PATHS: + - /srv/docker/logs [optional] WARNING: Missing critical paths detected - - ./db (service=db) + - /srv/docker/app/data (service=app) +``` + +--- + +## 🛠 Tech Stack + +* Python 3.10+ +* Docker Compose parsing +* Custom classification engine +* Borg backup integration + +--- + +## 🔢 Exit Codes + +| Code | Meaning | +| ---- | ---------------------------------------- | +| 0 | Success | +| 1 | Missing critical paths (automation mode) | +| 2 | Error / invalid input | --- ## 🔥 Future Ideas -- Notifications (mail, ntfy) -- Web interface -- Backup reports -- Restore validation -- smarter classification engine -- Docker API integration +* JSON output (`--json`) +* Web UI +* Email / ntfy notifications +* Restore validation +* Smarter service detection +* Backup manifests + +--- + +## ❤️ Credits + +Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk) + +Maintained by [Eddie Nielsen](https://lanx.dk) + +Feel free to contribute, suggest improvements or fork the project. --- ## 📜 License This project is licensed under the GNU GPL v3. - ---- - -## ❤️ Credits - -## ❤️ Credits - -Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk) - -Maintained by [Eddie Nielsen](https://lanx.dk) - -Feel free to contribute, suggest improvements, or fork the projec diff --git a/dockervault/CHANGELOG.MD b/dockervault/CHANGELOG.MD deleted file mode 100644 index 3744aab..0000000 --- a/dockervault/CHANGELOG.MD +++ /dev/null @@ -1,5 +0,0 @@ -M# Changelog - -All notable changes to this project will be documented in this file. - -## [0.1.0 diff --git a/main b/main new file mode 100644 index 0000000..e69de29