https://github.com/jabuwu/docker-volume-backup
Web based docker volume backup utility for backing up volume data to an S3 bucket, FTP, or local filesystem.
https://github.com/jabuwu/docker-volume-backup
docker
Last synced: 3 months ago
JSON representation
Web based docker volume backup utility for backing up volume data to an S3 bucket, FTP, or local filesystem.
- Host: GitHub
- URL: https://github.com/jabuwu/docker-volume-backup
- Owner: jabuwu
- License: unlicense
- Created: 2021-04-22T08:19:28.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-21T02:01:55.000Z (about 5 years ago)
- Last Synced: 2026-03-02T02:29:36.299Z (5 months ago)
- Topics: docker
- Language: TypeScript
- Homepage:
- Size: 1.95 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
- Contributing: contributing.md
- License: license.md
Awesome Lists containing this project
README
# Docker Volume Backup

[](https://gitpod.io/#https://github.com/jabuwu/docker-volume-backup)
Web based docker volume backup utility for backing up volume data to an S3 bucket, FTP, or local filesystem.
## Project Status
Use with caution. I've tested the project extensively with relatively small volumes and relatively few backup files, mostly using S3 as storage. Would love to get more people testing the project.
A list of planned features/improvements can be found at [#1](https://github.com/jabuwu/docker-volume-backup/issues/1). Once those features are implemented, I'll probably create some versioning/release system so that Docker Hub need only build "stable" versions of the project.
## How It works
The backend interacts with the Docker API through [dockerode](https://github.com/apocas/dockerode). The backup and restore operations create [alpine](https://hub.docker.com/_/alpine) containers attached to the volumes and runs `tar` commands inside them (along with a few other Unix commands), piping the data to/from `tar` back to the node process, which [gzip](https://nodejs.org/api/zlib.html#zlib_zlib_creategzip_options) compresses the data and streams it to/from S3, FTP, or the local filesystem.
The frontend is written in [Next.js](https://nextjs.org/) and simply interacts with the backend, mostly through [GraphQL](https://graphql.org/) queries. It's my first "large" React project so I'm sure I'm doing a lot of things suboptimally, and the code feels pretty messy.
## Deployment
The best way to deploy is to use docker compose. Here is a working `docker-compose.yml` file:
```
version: '3'
services:
docker-volume-backup:
image: jabuwu/docker-volume-backup
restart: always
environment:
- AUTH_USERNAME=user
- AUTH_PASSWORD=pass
ports:
- "1999:1999"
volumes:
- data:/data
- /var/run/docker.sock:/var/run/docker.sock
volumes:
data:
```
The `AUTH_USERNAME` and `AUTH_PASSWORD` environment variables are optional. If provided, they will enable nginx basic auth with the given username/password.
## Screenshots (Slightly Outdated)



