2625cf36d2
- Complete backup script for native Nextcloud (MySQL + files) - Systemd service and timer for daily automated backups at 2 AM - Backblaze B2 integration with secure credential storage - Incremental backup support with 30-day retention - zstd compression for 40-70% storage reduction - Comprehensive documentation and deployment guides - Successfully tested with first backup: 203MB DB + 1.3GB files - Cost-optimized: ~/bin/bash.01-0.02/month for 1.5GB data Deployment Details: - Installed B2 CLI via pipx - Created backup directories at /opt/nextcloud-backup/ - Configured systemd timer for daily execution at 2 AM - First backup verified in B2 bucket: jg-nextcloud - Automated scheduling enabled and tested Documentation includes: - Deployment report with complete setup details - Quick start guide for future deployments - Comprehensive technical reference - Troubleshooting procedures - File manifest and index
4.8 KiB
4.8 KiB
Nextcloud Backup Deployment Guide
Files to Deploy to Nextcloud VM (192.168.88.62)
All files are ready in /tmp/nextcloud-backup-deploy/ and need to be transferred to the Nextcloud VM.
Option 1: Copy Files Manually (Recommended)
Step 1: Copy the deployment bundle to Nextcloud VM
# From your workstation or jump host, copy files to the Nextcloud VM
scp -r /tmp/nextcloud-backup-deploy root@192.168.88.62:/tmp/
Step 2: SSH into Nextcloud VM and run installer
ssh root@192.168.88.62
cd /tmp/nextcloud-backup-deploy
sudo bash install-nextcloud-backup.sh
Option 2: Copy Individual Files
If the above doesn't work, copy files individually:
# On your workstation
scp /home/jgitta/nextcloud-backup-to-backblaze.sh root@192.168.88.62:/tmp/
scp /home/jgitta/install-nextcloud-backup.sh root@192.168.88.62:/tmp/
scp /home/jgitta/nextcloud-backup.service root@192.168.88.62:/tmp/
scp /home/jgitta/nextcloud-backup.timer root@192.168.88.62:/tmp/
# Then SSH into VM
ssh root@192.168.88.62
# Inside VM:
cd /tmp
chmod +x *.sh
sudo bash install-nextcloud-backup.sh
Option 3: Via Proxmox Host Jump
If direct SSH doesn't work, use the Proxmox host as a jump:
# From your workstation, use Proxmox host as jump
scp -o ProxyCommand="ssh -W %h:%p root@192.168.88.25" \
/tmp/nextcloud-backup-deploy root@192.168.88.62:/tmp/
Post-Installation Verification
After running the installer on the Nextcloud VM:
1. Verify Configuration
# Check Nextcloud configuration
sudo cat /opt/nextcloud-backup/.env
# Check B2 credentials (should show masked)
sudo cat /etc/nextcloud-backup/b2-credentials.env
2. Test B2 Authentication
# On Nextcloud VM, test B2 credentials
b2 authorize-account 00522b2471e5f090000000002 K005yPezlVJiBoZezpTKx8mNtwG5vfA
b2 account-info
3. Run Dry-Run Backup
# Test backup without uploading
sudo DRY_RUN=true /opt/nextcloud-backup/nextcloud-backup-to-backblaze.sh
# Check the output - should show what would be backed up
4. Run Real Backup
# Perform actual backup (will upload to B2)
sudo /opt/nextcloud-backup/nextcloud-backup-to-backblaze.sh incremental
# Monitor progress
tail -f /opt/nextcloud-backup/.backups/logs/backup_*.log
5. Enable Automation
# Enable and start the systemd timer
sudo systemctl enable nextcloud-backup.timer
sudo systemctl start nextcloud-backup.timer
# Verify it's scheduled
sudo systemctl list-timers nextcloud-backup.timer
sudo systemctl status nextcloud-backup.timer
Troubleshooting
B2 Authentication Fails
# Clear cached credentials
rm ~/.b2_account_info
# Re-authenticate
b2 authorize-account 00522b2471e5f090000000002 K005yPezlVJiBoZezpTKx8mNtwG5vfA
Check Backup Logs
# View recent backups
sudo tail -100 /opt/nextcloud-backup/.backups/logs/backup_*.log
# Check systemd logs
sudo journalctl -u nextcloud-backup.service -n 50
Verify MySQL Access
# Test MySQL connection
mysql -u nextcloud -p'Jogiocsi1211+' -e "SELECT 1"
# If this fails, check MySQL is running
sudo systemctl status mysql
Configuration Details
Your backup configuration:
| Setting | Value |
|---|---|
| Nextcloud Installation | Native Apache at /var/www/nextcloud |
| Data Directory | /mnt/nextcloud-data |
| Database | MySQL on localhost, db nextcloud |
| B2 Bucket | jg-nextcloud |
| Backup Schedule | Daily at 2 AM |
| Backup Type | Incremental (smart) |
| Retention | 30 days |
| Compression | zstd (fast, best compression) |
File Locations
After successful installation:
/opt/nextcloud-backup/
├── .env (your config)
├── nextcloud-backup-to-backblaze.sh (backup script)
├── .backups/
│ ├── logs/ (backup logs)
│ └── .backup-state.json (state tracking)
/etc/nextcloud-backup/
└── b2-credentials.env (B2 API keys - SECRET!)
/etc/systemd/system/
├── nextcloud-backup.service
└── nextcloud-backup.timer
Common Commands
# Check backup status
sudo /opt/nextcloud-backup/nextcloud-backup-to-backblaze.sh status
# View logs
sudo tail -f /opt/nextcloud-backup/.backups/logs/backup_*.log
# Monitor timer
sudo systemctl status nextcloud-backup.timer
# List backups in B2
b2 list-file-names jg-nextcloud nextcloud-backups/
# Manual incremental backup
sudo /opt/nextcloud-backup/nextcloud-backup-to-backblaze.sh incremental
# Manual full backup
sudo /opt/nextcloud-backup/nextcloud-backup-to-backblaze.sh full
Next Steps
- ✅ Deploy files to Nextcloud VM (this guide)
- ✅ Run installer
- ✅ Test backup with dry-run
- ✅ Run real backup
- ✅ Enable timer for automation
- ✅ Monitor first backup run
You're done! Nextcloud will now backup automatically daily at 2 AM to Backblaze B2.