Automatic backup and restore system for n8n
Features β’ Installation β’ Usage β’ Updates β’ Screenshots β’ πΊπ¦ Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° Π²Π΅ΡΡΡΡ
This section will be used to thank contributors and advisors who help improve this project.
- β Automatic Backup of n8n workflows and database
- β PostgreSQL & SQLite Support
- β Backup Compression (Gzip)
- β Backup Encryption (AES-256)
- β Cloud Backups (S3, Google Drive, OneDrive)
- β Flexible Scheduling (cron or intervals)
- β Backup Retention Policy (auto-delete old backups)
- β One-Click Backup & Restore
- β Protected Backups (prevent auto-deletion)
- β Web Interface for management
- β Automatic Update System from GitHub
- β Rollback capability
- β Connection Status Monitoring
- β Password Management
- β Detailed Logging
Main dashboard with system status and quick actions
Backup management: view, download, restore
Connection settings and backup scheduling
Automatic update system from GitHub
- Docker & Docker Compose
- n8n running in a Docker container
- PostgreSQL or SQLite database
- Minimum 1GB free space for backups
-
Download the latest release:
wget https://github.com/aleksnero/n8n-backup-manager/releases/latest/download/release.zip unzip release.zip cd n8n-backup-manager -
Start with Docker Compose:
docker compose up -d
Note
If you are using a reverse proxy like Nginx Proxy Manager, ensure that this container is in the same network, or add the proxy network to the docker-compose.yml file. By default, the example above includes npm_public network.
-
Open in Browser:
http://localhost:3000 -
First Time Setup:
- Click "First Time Setup"
- Create an admin account (username & password)
- Log in
git clone https://github.com/aleksnero/n8n-backup-manager.git
cd n8n-backup-managerCreate a .env file (see .env.example):
PORT=3000
JWT_SECRET=your_secret_key_heredocker-compose up -d --buildGo to Settings and configure:
For Docker:
- n8n Container Name: Name of your n8n container
- Database Container Name: Name of your DB container (e.g.,
postgres-1) - Database Type: PostgreSQL or SQLite
For PostgreSQL:
- Database User: username
- Database Password: password
- Database Name: database name
For SQLite:
- Database Path: path to DB file (e.g.,
/home/node/.n8n/database.sqlite)
Backup Optimization:
- Compression: Enable Gzip compression to save space
- Encryption: Secure your backups with AES-256 (Password required)
Cloud Configuration:
- Provider: S3 Compatible, Google Drive, or Microsoft OneDrive
- S3: Configure endpoint, region, bucket, and keys
- Google Drive (via Service Account or OAuth2) JSON or OAuth2 (Client ID, Secret, Refresh Token).
[!NOTE] If you are using a personal Gmail account and see a Quota Exceeded error, use this JSON format:
{ "client_id": "YOUR_ID", "client_secret": "YOUR_SECRET", "refresh_token": "YOUR_TOKEN" } - OneDrive: Use Refresh Token or OAuth2 credentials
Tip
View Detailed Cloud Setup Guide for step-by-step instructions on Google Drive and OneDrive configuration.
Scheduling:
- Backup Schedule: select interval (hours/minutes) or cron expression
- Max Backups to Keep: number of recent backups to keep before auto-deletion (excluding protected ones)
Automatic:
- Backups are created according to the schedule.
Manual:
- Go to Dashboard or Backups.
- Click Create Backup.
- Wait for completion.
- Go to Backups.
- Find the desired backup.
- Click Restore.
- Confirm action.
- Wait for restoration to complete.
- In Backups, click Download next to the file.
- The file will be saved to your computer.
Backup Manager supports automatic updates from GitHub:
- Go to Updates.
- Click Check for Updates.
- If new version is available, you will see release notes.
- Click Apply Update.
- Confirm.
- System will:
- Create a backup of current version
- Download update
- Apply changes
- Restart server
If issues occur after update:
- Go to Updates.
- Click Rollback.
- System restores previous version.
Example docker-compose.yml:
```yaml
services:
backup-manager:
build: .
container_name: n8n-backup-manager
restart: unless-stopped
ports:
- "${PORT:-3000}:${PORT:-3000}"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./backups:/app/backups
- ./data:/app/data
environment:
- PORT=${PORT:-3000}
- JWT_SECRET=${JWT_SECRET:-change_this_secret}
networks:
- default
- npm_public
networks:
npm_public:
external: true
name: nginx_proxy_manager_default| Variable | Description | Default |
|---|---|---|
JWT_SECRET |
Secret key for JWT | secret-key |
UPDATE_SERVER_URL |
URL for update checks | GitHub URL |
PORT |
Server port | 3000 |
| Volume | Description |
|---|---|
/var/run/docker.sock |
Docker access for container management |
./backups |
Backup storage |
./data |
SQLite database |
- Backend: Node.js, Express
- Frontend: React, Vite
- Database: SQLite (Sequelize ORM)
- Docker: Dockerode
- Scheduler: node-cron
- Authentication: JWT
Pull requests are welcome! For major changes, please open an issue first.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
MIT License - see LICENSE for details
Have questions or ideas? Join GitHub Discussions!
- π‘ Ideas - suggest new features
- β Q&A - get help from community
- π’ Announcements - stay updated
- π Show and tell - share how you use Backup Manager
If you encounter issues:
- Check Issues
- Create a new Issue with detailed description
- Attach logs from
docker-compose logs
- GitHub: https://github.com/aleksnero/n8n-backup-manager
- Releases: https://github.com/aleksnero/n8n-backup-manager/releases
- Issues: https://github.com/aleksnero/n8n-backup-manager/issues
Made for the n8n community with β€οΈ

