Nextcloud Backblaze B2 Automated Backup Solution
🎯 Quick Overview
This directory contains a complete, production-ready solution for automatically backing up Nextcloud to Backblaze B2.
Status: ✅ DEPLOYED AND OPERATIONAL
- ✅ Automated daily backups (2 AM)
- ✅ First backup verified (203 MB DB + 1.3 GB files)
- ✅ Systemd integration for reliable scheduling
- ✅ Cost-optimized (~$0.01-0.02/month)
📦 What's Included
Scripts
-
nextcloud-backup-to-backblaze.sh - Main backup execution script
- Backs up MySQL database via mysqldump
- Archives files with tar + zstd compression
- Uploads directly to Backblaze B2
- ~3.4 KB, fully commented
-
nextcloud-backup.service - systemd service unit
-
nextcloud-backup.timer - Daily scheduler (2 AM)
Configuration
- nextcloud-backup.env.template - Configuration template
- nextcloud-backup.env.configured - Deployed configuration (with credentials)
Documentation
Complete guides for setup, usage, and troubleshooting:
-
DEPLOYMENT_REPORT.md ← Start here!
- Complete deployment details
- What was accomplished
- Test results and verification
-
README_NEXTCLOUD_BACKUPS.md
- Feature overview
- System requirements
- Cost analysis
-
BACKUP_QUICK_START.md
- Quick reference
- Common commands
- Troubleshooting shortcuts
-
NEXTCLOUD_BACKBLAZE_SETUP.md
- Detailed technical guide
- Installation procedures
- Advanced configuration
-
DEPLOYMENT_CHECKLIST.md
- Step-by-step validation
- Pre/post deployment checks
-
INDEX.md
- File reference
- Navigation guide
- Learning paths
🚀 System Details
Deployed On: Nextcloud VM (192.168.88.62) - "next"
Installation Type: Native Apache + MySQL
Backup Details:
- Schedule: Daily at 2:00 AM CDT
- Type: Incremental (smart deduplication)
- Compression: zstd (40-70% reduction)
- Retention: 30 days auto-cleanup
- Target: Backblaze B2 bucket
jg-nextcloud
Files Backed Up:
- Database:
/var/lib/mysql/nextcloud→ 203 MB - Files:
/mnt/nextcloud-data→ ~1.3 GB - Total: ~1.5 GB compressed
📋 Installation Locations
/opt/nextcloud-backup/
├── nextcloud-backup-to-backblaze.sh ← Main script
├── .env ← Configuration
└── .backups/
├── logs/ ← Backup logs
└── .backup-state.json ← State tracking
/etc/nextcloud-backup/
└── b2-credentials.env ← B2 API keys (chmod 600)
/etc/systemd/system/
├── nextcloud-backup.service
└── nextcloud-backup.timer
🔧 Common Commands
# Check backup status
sudo systemctl status nextcloud-backup.timer
# View recent logs
sudo tail -f /opt/nextcloud-backup/.backups/logs/backup_*.log
# Manual backup
sudo /opt/nextcloud-backup/nextcloud-backup-to-backblaze.sh incremental
# List backups in B2
sudo /root/.local/share/pipx/venvs/b2/bin/b2 ls --recursive "b2://jg-nextcloud/nextcloud-backups/"
# View systemd logs
sudo journalctl -u nextcloud-backup.service -n 50
📊 Test Results
✅ First Backup: April 25, 2026 at 5:55 PM CDT
- Database: 203 MB (compressed)
- Files: ~1.3 GB (compressed from 1.3TB)
- Upload: ✅ Both files successfully in B2
- Duration: ~2 minutes
✅ Verification:
- B2 credentials: Working
- Database backup: Valid
- File archive: Valid
- Systemd timer: Active and scheduled
💰 Cost Analysis
- Storage: $0.006 per GB/month (B2 rate)
- Current backup: ~1.5 GB
- Monthly cost: ~$0.01
- Annual cost: ~$0.12
Note: Costs assume 30-day retention and incremental backups
🔐 Security
✅ B2 credentials: Stored securely (chmod 600) ✅ Database password: Protected in config ✅ No credentials in logs ✅ Automatic temp file cleanup ✅ Encrypted transmission to B2
📖 Getting Started
For First-Time Setup
- Read: DEPLOYMENT_REPORT.md (overview of what was done)
- Read: README_NEXTCLOUD_BACKUPS.md (features & costs)
- Check: BACKUP_QUICK_START.md (commands reference)
For Detailed Reference
- Read: NEXTCLOUD_BACKBLAZE_SETUP.md (complete guide)
- Use: DEPLOYMENT_CHECKLIST.md (validation steps)
For File Navigation
- See: INDEX.md (file guide & learning paths)
⏰ Scheduled Backup
- When: Daily at 2:00 AM CDT
- Status: ✅ Active and enabled
- Next run: Tomorrow at 2:04 AM
- Type: Incremental (smart, only changed files)
🛠️ Maintenance
Daily:
- Automated backup (no action needed)
Weekly:
- Review logs for errors
- Check B2 bucket size
Monthly:
- Test restore procedures
- Review B2 costs
Annually:
- Rotate B2 credentials
- Full security audit
❓ Troubleshooting
See NEXTCLOUD_BACKBLAZE_SETUP.md for detailed troubleshooting.
Quick checks:
# Check if timer is running
sudo systemctl status nextcloud-backup.timer
# Check logs for errors
sudo journalctl -u nextcloud-backup.service -n 100
# Verify B2 auth
b2 account-info
# Test manual backup
sudo /opt/nextcloud-backup/nextcloud-backup-to-backblaze.sh incremental
📞 Support Files
| Document | Purpose |
|---|---|
| DEPLOYMENT_REPORT.md | What was done & test results |
| README_NEXTCLOUD_BACKUPS.md | Feature overview |
| BACKUP_QUICK_START.md | Quick reference |
| NEXTCLOUD_BACKBLAZE_SETUP.md | Detailed guide |
| DEPLOYMENT_CHECKLIST.md | Validation steps |
| INDEX.md | File navigation |
✅ Success Indicators
You'll know it's working when:
- ✅ Systemd timer shows "active (waiting)"
- ✅ Logs show backup starting at 2 AM
- ✅ Files appear in B2 bucket
- ✅ No errors in journalctl logs
📝 Version Info
- Created: April 25, 2026
- Status: Production ready
- Tested with: Nextcloud 33.0.0 on Debian
- Backup frequency: Daily automatic
- Uptime SLA: Systemd persistent scheduling
For detailed deployment information, see DEPLOYMENT_REPORT.md
For questions or issues, refer to the comprehensive documentation included in this directory.