Appearance
Backups
Home Lab backs up everything - pages, services, widgets, credentials, favourites and settings - and gives you both automatic and manual options.
Automatic daily backups
On startup (and hourly after), the server writes a dated backup and prunes to the last 7 days:
- Written to
DATA_DIR/backups/homelab-backup-YYYY-MM-DD.json - One file per day; today's is created if it doesn't already exist
- The hourly check means it self-heals across restarts and always keeps today's
- Stored on the persisted data volume, so backups survive container restarts and rebuilds
Retention is configurable with the BACKUP_KEEP environment variable (default 7).
Manage them in the UI
Settings → App & data → Automatic backups lists each daily backup with its date and size, and per-row:
- ⤓ Download - grab that day's file
- ↻ Restore - roll back to that day (with a confirm, then reload)
Manual backup & restore
Also in App & data:
- Download backup - export the current state to a JSON file right now.
- Restore from backup - upload a backup file to replace all current data.
What's in a backup
A backup is a single JSON object containing:
- All config (pages, favourites, weather, dashboard, docker config, health source, etc.)
- All services (cards and their layout)
- All credentials (widget secrets)
Secrets are included
Backups contain API keys, tokens and passwords in plaintext - that's required for a real restore. Treat the file as sensitive: store it securely and never commit it to a repository.
Restoring safely
Restore is destructive - it replaces everything currently configured. The UI asks for confirmation first, then reloads. The restore endpoints validate that the file is a genuine Home Lab backup and reject anything else.