Files
homelab-configs/README.md
T

237 lines
6.0 KiB
Markdown

# 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:
1. **DEPLOYMENT_REPORT.md****Start here!**
- Complete deployment details
- What was accomplished
- Test results and verification
2. **README_NEXTCLOUD_BACKUPS.md**
- Feature overview
- System requirements
- Cost analysis
3. **BACKUP_QUICK_START.md**
- Quick reference
- Common commands
- Troubleshooting shortcuts
4. **NEXTCLOUD_BACKBLAZE_SETUP.md**
- Detailed technical guide
- Installation procedures
- Advanced configuration
5. **DEPLOYMENT_CHECKLIST.md**
- Step-by-step validation
- Pre/post deployment checks
6. **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
```bash
# 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
1. Read: **DEPLOYMENT_REPORT.md** (overview of what was done)
2. Read: **README_NEXTCLOUD_BACKUPS.md** (features & costs)
3. 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:**
```bash
# 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.