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.mdStart 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

# 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:

# 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.

S
Description
No description provided
Readme 108 KiB
Languages
Shell 100%