Self-hosted · open source · pull-based backups
LazyBackup is a self-hosted web app that pulls data from remote servers to the machine running it—via rsync or scp over SSH. Schedule jobs, keep versioned snapshots, and review history from one dashboard. No agents on your VPS, no cloud lock-in.
$ docker run -d --name lazybackup \
-p 3000:3000 -v ./backups:/backups \
ghcr.io/ceneka/lazybackup:latest
✓ Dashboard ready at http://localhost:3000
→ Server added: vps.prod (SSH key)
→ Job: vps.prod:/var/www → /backups/mysite · 0 2 * * *
✓ rsync pull complete · 1.2 GB · snapshot 2026-07-08_02-00
Remote source → local destination on your LazyBackup host. Trusted self-hosted deployment with no web UI login layer.
Add, edit, and test VPS connections over SSH. Password auth works for connection tests; SSH keys are required to run backups.
Define remote source paths, local destinations on the LazyBackup host, cron schedules, exclude patterns, and pre-backup shell commands.
Optional timestamped copies with automatic retention—keep what you need without manual cleanup.
In-process cron scheduler runs jobs on time. No external cron daemon or sidecar required.
Track every run, read logs, and monitor success rates from a single self-hosted dashboard.
A clean, self-hosted dashboard to manage servers, jobs, and backup history—no login layer, just your backup host.

LazyBackup runs on your backup machine and pulls files from remote VPS instances into local paths—e.g. /backups/mysite in Docker.
Run the Docker image or clone the repo and start with Bun on your backup host.
Add remote servers via SSH, then create jobs that pull data to local paths like /backups/mysite.
LazyBackup runs on schedule, keeps snapshots, and logs every run in the dashboard.
Next.js, Bun, SQLite, and rsync—deployed with Docker.
Next.js 15
Web UI
React 19
Components
Tailwind + shadcn
Design
SQLite + Drizzle
Persistence
rsync / scp
Transfers
Bun
Runtime
Browse the code on GitHub or try a running instance at lazy.zic.ar.
Docker is the recommended path. Mount your SSH keys read-only and a local volume for backup storage.
Docker (recommended)
docker run -d \
--name lazybackup \
-p 3000:3000 \
-v lazybackup_data:/app/data \
-v ./backups:/backups \
-v ~/.ssh:/root/.ssh:ro \
-e DATABASE_URL=file:/app/data/data.db \
ghcr.io/ceneka/lazybackup:latestOr run docker compose up -d. Manual setup: git clone, bun install, bun run db:migrate, bun run dev.