Self-hosted web UI for scheduling and managing database backups in Docker environments
2.7K
A self-hosted web UI for scheduling and managing database backups in Docker environments.
Connect your Docker hosts, discover running databases automatically, and set up scheduled backups - without touching a config file.
Tech stack: Java 21 · Spring Boot 3 · H2 · React + TypeScript · shadcn/ui · Docker
docker-compose down/up# docker-compose.yml
services:
backup-manager:
image: nomad4tech/backup-manager:latest
container_name: backup-manager
ports:
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data # settings & task config (required)
- ./backups:/app/backups # backup files (required)
environment:
- SPRING_PROFILES_ACTIVE=docker
restart: unless-stopped
docker compose up -d
Open http://localhost:8080 - the local Docker socket is detected automatically.
Default credentials: admin/admin - change them immediately in Settings -> Account.
Go to Docker Sockets -> Add Socket, enter the host and SSH credentials. Backup Manager establishes an SSH tunnel and proxies the Docker socket transparently.
socat is managed automatically: if port 2375 is free on the remote host, Backup Manager starts socat via SSH and stops it on disconnect. If Docker is already exposed on that port by other means, no setup is needed. Install socat on the remote host only if Backup Manager needs to start it itself.
Note: SSH password is stored in plain text. For production, prefer private key authentication - specify the key path instead of a password.
Backup Manager runs pg_dump/mysqldump inside the database container via Docker exec API. Output streams directly to disk - never buffered in memory, so large databases don't cause memory pressure.
No credentials are stored in config files. PostgreSQL uses $POSTGRES_USER, MySQL uses $MYSQL_ROOT_PASSWORD - both resolved inside the container at runtime.
| Database | Backup tool |
|---|---|
| PostgreSQL | pg_dump |
| MySQL | mysqldump |
| MariaDB | mysqldump/mariadb-dump |
| Variable | Default | Description |
|---|---|---|
BACKUP_MANAGER_BACKUP_BASE_DIRECTORY | ./backups | Backup storage root |
BACKUP_MANAGER_BACKUP_MAX_CONCURRENT | 3 | Max parallel backup jobs |
BACKUP_MANAGER_BACKUP_MIN_FREE_SPACE_BYTES | 536870912 | Min free space before dump (bytes) |
BACKUP_MANAGER_BACKUP_DEFAULT_TIMEOUT | 3600 | Max seconds per dump before it's interrupted |
BACKUP_MANAGER_CORS_ALLOWED_ORIGINS | * | Restrict CORS origins in production |
APP_SECURITY_REMEMBER_ME_KEY | bkpmgr-default-key-change-in-production | Secret key for remember-me cookie signing; change in production |
RUNNING until complete/var/run/docker.sockNo specific priority or timeline. Features are added as time and interest allow
MIT License
Content type
Image
Digest
sha256:85840c9b8…
Size
152.9 MB
Last updated
5 months ago
docker pull nomad4tech/backup-manager