Skip to content

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.

Next steps