- Go 79.2%
- JavaScript 15.5%
- CSS 4%
- HTML 0.7%
- Dockerfile 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The redesigned UI has been in production since
|
||
| .forgejo/workflows | ||
| cmd/backup-engine | ||
| docs | ||
| internal | ||
| .dockerignore | ||
| .gitignore | ||
| CLAUDE.md | ||
| Dockerfile | ||
| FABLE_AUDIT.md | ||
| go.mod | ||
| go.sh | ||
| go.sum | ||
| README.md | ||
backup-engine
A single Go binary with a web UI that manages rsync, RouterOS-config and IMAP mailbox
backup jobs, and records a run that never started as missed instead of staying silent.
Jobs and targets live in a SQLite database and are edited in the UI; there is no config file.
Quick start
BACKUP_ENGINE_DATA=$(mktemp -d) BACKUP_ENGINE_ADDR=127.0.0.1:8080 \
go run ./cmd/backup-engine
# open http://127.0.0.1:8080 (set BACKUP_ENGINE_PASSWORD to seed a password)
Tests: go test ./.... Go 1.26+ is required (see go.mod); ./go.sh <args> runs the same
commands inside a golang:1.26-alpine container if the host has no Go.
Build and deploy
docker build -t backup-engine . produces a small static image. On every push to main,
Forgejo Actions runs vet, race tests, gofmt, govulncheck and staticcheck, then publishes a
multi-arch (amd64 + arm64) image to git.exithub.net/ivan.pavlina/backup-engine. The
container runs on a MikroTik RB5009 and repulls it within a minute of the push (scheduler repull-tick).
More
- CLAUDE.md — architecture, commands, deployment, gotchas
- docs/DESIGN.md — full design and operations reference (data flow, run guards, security, configuration)