Glare is a distributed backup control plane for multi-server environments.
It provides a web UI with embedded API routes, a background jobs service, and worker agents that execute backups locally with rustic.
Workers are independent and do not require the control plane to be online. The workers are not the ones scheduling the snapshots, instead they fetch the backup plans periodically and report batched statistics.
- Distributed-first design
- Workers operate independently of the control plane
- Simple internal deployment
web: Control plane UI + API routes (auth, worker sync, repositories, plans, runs/events, observability).jobs: background jobs process (migrations, startup checks, snapshot sync interval).worker: Rust worker that executes backup jobs. (Requires a port)
- Copy the
podman-compose.ymlfile. - Update the required environment variables:
-
BETTER_AUTH_SECRETGenerate one using: https://www.better-auth.com/docs/installation#set-environment-variables -
NEXT_APP_URLSet this to the URL of the web app/API origin. Used by the Next.js runtime and client-side code. Example:https://app.example.com -
APP_URLSet this to the URL of the web app/API origin. Used by server-side code and auth components (Better Auth). This can be the same asNEXT_APP_URLfor single-domain setups. Example:https://app.example.com
- Start the stack:
podman compose up -dTo stop it:
podman compose down- Reverse proxy:
Copy the contents of Caddyfile in
/etc/caddy/Caddyfilethen runsystemctl restart caddy
Podman and caddy are not a required but they are really cool
The installer command will show up when you create one.
You can access it at http(s)://<your-web-url>/openapi where <your-web-url> is the value you set for NEXT_APP_URL or APP_URL
- This app is 60% LLM written. Using opus and codex.
- This is an internal app, run it on an internal network. E.g. Tailscale