Robust cold backups for Docker environments using Kopia
Project description
Kopi-Docka
Robust Cold Backups for Docker Environments using Kopia
Kopi-Docka is a Python-based backup tool for Docker containers and their volumes. Features controlled downtime windows, encrypted snapshots, and automatic disaster recovery bundles.
What is Kopi-Docka?
Kopi-Docka = Kopia + Docker + Backup
A wrapper around Kopia, specifically designed for Docker environments:
- ๐ฆ Stack-Aware - Backs up entire Docker Compose stacks as logical units
- ๐ Encrypted - End-to-end encryption via Kopia (AES-256-GCM)
- ๐ Multi-Backend - Local, S3, B2, Azure, GCS, SFTP, Tailscale
- ๐พ Disaster Recovery - Encrypted emergency bundles with auto-reconnect
- ๐ง Pre/Post Hooks - Custom scripts for maintenance mode
- ๐ Systemd-Native - Production-ready daemon with sd_notify & watchdog
- ๐ Restore Anywhere - Recovery on completely new hardware
Quick Start
Installation
# Recommended: pipx (isolated environment)
pipx install kopi-docka
# Or: pip (system-wide)
pip install kopi-docka
Setup
# Interactive setup wizard
sudo kopi-docka setup
The wizard guides you through:
- โ Dependency check (Kopia, Docker)
- โ Backend selection (Local, S3, B2, Azure, GCS, SFTP, Tailscale)
- โ Repository initialization
- โ Connection test
First Backup
# List backup units (containers/stacks)
sudo kopi-docka list --units
# Test run (no changes)
sudo kopi-docka dry-run
# Full backup
sudo kopi-docka backup
# Create disaster recovery bundle (IMPORTANT!)
sudo kopi-docka disaster-recovery
# โ Copy bundle to safe location: USB/cloud/safe!
Automatic Backups
# Generate systemd units
sudo kopi-docka write-units
# Enable daily backups (02:00 default)
sudo systemctl enable --now kopi-docka.timer
# Check status
sudo systemctl status kopi-docka.timer
Unique Features
1. Compose-Stack-Awareness
Automatically recognizes Docker Compose stacks and backs them up as atomic units with docker-compose.yml included.
kopi-docka list --units
Backup Units:
- wordpress (Stack, 3 containers, 2 volumes)
- nextcloud (Stack, 5 containers, 3 volumes)
- gitlab (Stack, 4 containers, 4 volumes)
2. Disaster Recovery Bundles
Encrypted packages containing everything needed to reconnect to your repository on a new server. Time to recovery: 15-30 minutes instead of hours.
3. Tailscale Integration
Automatic peer discovery for P2P backups over your private network. Use your own hardware instead of cloud storage.
Available Backup Targets
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโ
โ Status โ Hostname โ Disk Free โ Latency โ
โโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโผโโโโโโโโโโโค
โ ๐ข Onlineโ cloud-vps โ 450.2GB โ 23ms โ
โ ๐ข Onlineโ home-nas โ 2.8TB โ 45ms โ
โโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโ
4. Systemd Integration
Production-ready daemon with sd_notify, watchdog monitoring, PID locking, and security hardening.
Read detailed feature documentation โ
What's New in v3.3.0
- ๐ฏ Backup Scope Selection - minimal/standard/full scopes
- ๐ Docker Network Backup - Complete IPAM configuration
- ๐ง Pre/Post Backup Hooks - Custom scripts for maintenance mode
- โ ๏ธ Conflict Detection - Interactive restore with conflict resolution
Documentation
๐ Complete Documentation:
- Features - Unique features, what's new, why Kopi-Docka?
- Installation - System requirements, installation options
- Configuration - Wizards, config files, storage backends
- Usage - CLI commands, workflows, how it works
- Hooks - Pre/post backup hooks, examples
- Troubleshooting - Common issues, FAQ
- Development - Project structure, contributing
๐ Examples:
- examples/config.json - Sample configuration
- examples/docker-compose.yml - Example stack
- examples/hooks/ - Hook script examples
- examples/systemd/ - Systemd setup guide
CLI Commands
Setup & Configuration
sudo kopi-docka setup # Master setup wizard
sudo kopi-docka new-config # Config wizard only
sudo kopi-docka status # Backend status (disk, connectivity)
Backup & Restore
sudo kopi-docka backup # Full backup (standard scope)
sudo kopi-docka backup --scope minimal # Volumes only
sudo kopi-docka backup --scope full # Complete system
sudo kopi-docka restore # Interactive restore wizard
sudo kopi-docka disaster-recovery # Create DR bundle
Repository & Automation
sudo kopi-docka repo-status # Repository info
sudo kopi-docka write-units # Generate systemd units
sudo kopi-docka daemon # Run as systemd daemon
Storage Backends
Kopi-Docka supports 7 different backends:
- Local Filesystem - Local disk or NAS mount
- AWS S3 - Amazon S3 or compatible (Wasabi, MinIO)
- Backblaze B2 - Affordable cloud storage (~$5/TB/month)
- Azure Blob - Microsoft Azure storage
- Google Cloud Storage - GCS
- SFTP - Remote server via SSH
- Tailscale - P2P over private network (no cloud costs!)
System Requirements
- OS: Linux (Debian, Ubuntu, Arch, Fedora, RHEL/CentOS)
- Python: 3.10 or newer
- Docker: Docker Engine 20.10+
- Kopia: 0.10+ (automatically checked)
Feature Comparison
| Feature | Kopi-Docka | docker-volume-backup | Duplicati | Restic |
|---|---|---|---|---|
| Docker-native | โ | โ | โ | โ |
| Compose-Stack-Aware | โ | โ | โ | โ |
| Network Backup | โ | โ | โ | โ |
| DR Bundles | โ | โ | โ | โ |
| Tailscale Integration | โ | โ | โ | โ |
| systemd-native | โ | โ | โ | โ |
| Pre/Post Hooks | โ | โ ๏ธ | โ | โ |
| Multi-Cloud | โ | โ | โ | โ |
Who Is It For?
- Homelab Operators - Multiple Docker hosts with offsite backups
- Self-Hosters - Docker services with professional backup strategy
- Small Businesses - Disaster recovery without enterprise costs
- Power Users - Full control over backup and restore processes
Credits & Acknowledgments
Author: Markus F. (TZERO78)
Links:
- PyPI: pypi.org/project/kopi-docka
- GitHub: github.com/TZERO78/kopi-docka
Powered by Kopia
Kopi-Docka wouldn't exist without Kopia!
Kopi-Docka is a wrapper that uses Kopia's powerful backup engine. Kopia provides:
- ๐ End-to-end encryption (AES-256-GCM)
- ๐๏ธ Deduplication & compression
- โ๏ธ Multi-cloud support
- ๐ฆ Incremental snapshots
- ๐ High performance
Links:
- Kopia: https://kopia.io
- Kopia GitHub: https://github.com/kopia/kopia
Other Dependencies
Note: Kopi-Docka is an independent project with no official affiliation to Docker Inc. or the Kopia project.
License
MIT License - see LICENSE for details.
Copyright (c) 2025 Markus F. (TZERO78)
Support & Community
- ๐ฆ PyPI: pypi.org/project/kopi-docka
- ๐ Documentation: Complete docs
- ๐ Bug Reports: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
Love Kopi-Docka? Give us a โญ on GitHub!
Current Version: v3.3.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kopi_docka-3.3.1.tar.gz.
File metadata
- Download URL: kopi_docka-3.3.1.tar.gz
- Upload date:
- Size: 116.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ad6320473f62c9caf01e2f139d231dba7531e3e58017f86b81bf03cd88cecf8
|
|
| MD5 |
58a0e45da70644f232f84d066635da2b
|
|
| BLAKE2b-256 |
0bf1695b1696f080f6b9330396b73441cbd161cba41ca7c2b363066aa227b506
|
Provenance
The following attestation bundles were made for kopi_docka-3.3.1.tar.gz:
Publisher:
publish.yml on TZERO78/kopi-docka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kopi_docka-3.3.1.tar.gz -
Subject digest:
6ad6320473f62c9caf01e2f139d231dba7531e3e58017f86b81bf03cd88cecf8 - Sigstore transparency entry: 748008212
- Sigstore integration time:
-
Permalink:
TZERO78/kopi-docka@e8cdfffcdb9655b9a9af2dd89e6d8fe07b6eb8c0 -
Branch / Tag:
refs/tags/v3.3.1 - Owner: https://github.com/TZERO78
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e8cdfffcdb9655b9a9af2dd89e6d8fe07b6eb8c0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kopi_docka-3.3.1-py3-none-any.whl.
File metadata
- Download URL: kopi_docka-3.3.1-py3-none-any.whl
- Upload date:
- Size: 140.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fbd6ace189f5cec06b363194f6764eba040e0a48d5ef8b09a9731d91e9a7598
|
|
| MD5 |
ead005ff6183a43aba0b7e30cb3e50a9
|
|
| BLAKE2b-256 |
bed299aab86c9bda218eb2538a65597c4e2d8440f90c951d239eda6df961d0ab
|
Provenance
The following attestation bundles were made for kopi_docka-3.3.1-py3-none-any.whl:
Publisher:
publish.yml on TZERO78/kopi-docka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kopi_docka-3.3.1-py3-none-any.whl -
Subject digest:
7fbd6ace189f5cec06b363194f6764eba040e0a48d5ef8b09a9731d91e9a7598 - Sigstore transparency entry: 748008214
- Sigstore integration time:
-
Permalink:
TZERO78/kopi-docka@e8cdfffcdb9655b9a9af2dd89e6d8fe07b6eb8c0 -
Branch / Tag:
refs/tags/v3.3.1 - Owner: https://github.com/TZERO78
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e8cdfffcdb9655b9a9af2dd89e6d8fe07b6eb8c0 -
Trigger Event:
push
-
Statement type: