r/nodered • u/Business_Treacle4462 • 17h ago
FlowHistory: a backup and restore tool for Node-RED
https://github.com/FlowHistory/FlowHistory
A self-hosted backup and restore tool for Node-RED flow files. Runs as a Docker container that manages backups for one or more Node-RED instances, local (file-based) or remote (API-based). Automatically detects flow changes, creates compressed backups, and provides a web UI for managing backups, viewing diffs, and restoring.
Features
- Multi-instance support - manage backups for multiple Node-RED instances from a single deployment
- Local and remote instances - watch local files via inotify or poll remote instances via the Node-RED Admin API
- Automatic backups on change - file watching (local) or API polling (remote) with configurable intervals
- Scheduled backups - hourly, daily, or weekly via APScheduler
- Manual backups - one-click from the dashboard
- Visual diff viewer - see which tabs, subflows, and nodes changed between any two backups, with field-level diffs
- One-click restore - restores files (local) or deploys flows via API (remote), optionally restarts the container
- Pre-restore safety backup - always created before overwriting current flows
- Checksum deduplication - skips backup if flows haven't changed (SHA256)
- Retention policies - by max count and max age, with protection for pinned and recent safety backups
- Backup import/export - upload backup archives from other instances or download them for offline storage
- Credentials and settings backup - optionally include flows_cred.json and settings.js (local only)
- Labels and notes - annotate backups with descriptions
- Notifications - alerts via Discord, Slack, Telegram, Pushbullet, or Home Assistant for backup failures, restores, and more
- Dark mode - with system preference detection and manual toggle
- Optional password auth - simple shared password via environment variable
- Health check endpoint - for Docker healthcheck integration
- Prometheus /metrics endpoint - HTTP and per-instance backup metrics for scraping


