Skip to content

ebadenes/DockerVault

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DockerVault

Auto-discover Docker bind mounts and back them up to the cloud or locally.

DockerVault inspects all running Docker containers, groups their bind mounts by Docker Compose stack, compresses them into per-stack archives, and uploads them using eclone or rsync.

Descubre automáticamente los bind mounts de Docker y los respalda en la nube o localmente.

DockerVault inspecciona todos los contenedores Docker, agrupa sus bind mounts por stack de Docker Compose, los comprime en archivos por stack, y los sube usando eclone o rsync.


Install / Instalación

One-liner

curl -fsSL https://raw.githubusercontent.com/ebadenes/DockerVault/main/install.sh | bash

This downloads the latest release binary for your OS/architecture into ~/.local/bin/. If no prebuilt binary is available, it falls back to building via Docker.

Descarga el binario de la última release para tu OS/arquitectura en ~/.local/bin/. Si no hay binario disponible, compila usando Docker.

From source / Desde el código fuente

git clone https://github.com/ebadenes/DockerVault.git
cd DockerVault
docker build --no-cache -f build/Dockerfile -t dockervault-build .
docker create --name dv-extract dockervault-build
docker cp dv-extract:/dockervault ./dockervault
docker rm dv-extract
./dockervault install

Usage / Uso

Basic backup / Backup básico

dockervault run --remote drive:backup

This will:

  1. Discover all Docker bind mounts
  2. Group them by Docker Compose stack
  3. Compress each stack into backup-{stack}-{timestamp}.tar.gz
  4. Upload to drive:backup/{hostname}/{date}/

Esto va a:

  1. Descubrir todos los bind mounts de Docker
  2. Agruparlos por stack de Docker Compose
  3. Comprimir cada stack en backup-{stack}-{timestamp}.tar.gz
  4. Subir a drive:backup/{hostname}/{fecha}/

Dry run / Simulación

dockervault run --remote drive:backup --dry-run

Shows the execution plan without performing any actions. / Muestra el plan de ejecución sin hacer nada.

Filter by path / Filtrar por ruta

# Mounts starting with this prefix / Mounts que empiecen con este prefijo
dockervault run --remote drive:backup --path /home/user/Docker

# Mounts containing this string / Mounts que contengan este string
dockervault run --remote drive:backup --path-contains Docker

# Both combined (AND) / Ambos combinados (AND)
dockervault run --remote drive:backup --path /home --path-contains Docker

Exclude stacks / Excluir stacks

dockervault run --remote drive:backup --exclude portainer,plex,monitoring

Without compression / Sin compresión

dockervault run --remote drive:backup --no-compress

Transfers raw directories instead of creating archives. / Transfiere directorios sin comprimir.

Using rsync / Usando rsync

dockervault run --remote user@server:/backups --method rsync

Quiet mode (for cron) / Modo silencioso (para cron)

dockervault run --remote drive:backup --quiet

Verbose output / Salida detallada

dockervault run --remote drive:backup --verbose

Commands / Comandos

Command / Comando Description / Descripción
dockervault run Discover mounts and run backup / Descubrir mounts y ejecutar backup
dockervault install Install binary to ~/.local/bin/ / Instalar binario en ~/.local/bin/
dockervault uninstall Remove binary from ~/.local/bin/ / Eliminar binario de ~/.local/bin/
dockervault update Self-update to latest GitHub release / Auto-actualizar a la última release
dockervault version Show current version / Mostrar versión actual

Flags for run

Flag Short Default Description / Descripción
--remote (required) Backup destination (eclone remote or rsync path) / Destino del backup
--method eclone Backup method: eclone or rsync / Método de backup
--path Only mounts starting with this prefix / Solo mounts que empiecen con este prefijo
--path-contains Only mounts containing this string / Solo mounts que contengan este string
--exclude Exclude stacks by name (comma-separated) / Excluir stacks por nombre
--no-compress false Transfer raw directories / Transferir sin comprimir
--dry-run -n false Show plan without executing / Mostrar plan sin ejecutar
--verbose -v false Stream subprocess output / Mostrar salida de subprocesos
--quiet -q false Suppress all output except errors / Suprimir toda salida excepto errores

Features / Funcionalidades

  • Auto-discovery: Inspects all Docker containers via docker inspect to find bind mounts
  • Stack grouping: Groups mounts by com.docker.compose.project label; standalone containers go to a standalone group
  • Per-stack compression: Creates backup-{stack}-{timestamp}.tar.gz archives in /tmp
  • Destination enrichment: Automatically appends {hostname}/{date} to the remote path
  • Remote validation: Checks that the eclone remote is configured before starting
  • Interactive eclone install: If eclone is missing, prompts to install it before doing any work
  • Path filtering: Filter mounts by prefix (--path) or substring (--path-contains)
  • Stack exclusion: Skip specific stacks with --exclude
  • Dry run: Preview the full plan without executing anything
  • Self-update: dockervault update downloads the latest release from GitHub
  • Cross-platform: Releases for linux/amd64 and linux/arm64 via GitHub Actions

  • Auto-descubrimiento: Inspecciona todos los contenedores Docker vía docker inspect para encontrar bind mounts
  • Agrupación por stack: Agrupa mounts por label com.docker.compose.project; contenedores sueltos van al grupo standalone
  • Compresión por stack: Crea archivos backup-{stack}-{timestamp}.tar.gz en /tmp
  • Enriquecimiento del destino: Agrega automáticamente {hostname}/{fecha} a la ruta remota
  • Validación del remote: Verifica que el remote de eclone esté configurado antes de empezar
  • Instalación interactiva de eclone: Si eclone no está instalado, ofrece instalarlo antes de hacer cualquier trabajo
  • Filtrado de rutas: Filtrar mounts por prefijo (--path) o substring (--path-contains)
  • Exclusión de stacks: Saltar stacks específicos con --exclude
  • Simulación: Vista previa del plan completo sin ejecutar nada
  • Auto-actualización: dockervault update descarga la última release de GitHub
  • Multiplataforma: Releases para linux/amd64 y linux/arm64 vía GitHub Actions

Cron example / Ejemplo de cron

# Daily backup at 3am / Backup diario a las 3am
0 3 * * * /home/user/.local/bin/dockervault run --remote drive:backup --quiet --path /home/user/Docker --exclude portainer 2>&1 | logger -t dockervault

Requirements / Requisitos

  • Docker (for container discovery / para descubrimiento de contenedores)
  • eclone or rsync (for transfers / para transferencias)

License / Licencia

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors