Skip to main content
Mini PC Lab logo
Mini PC Lab Tested. Benchmarked. Reviewed.
tutorials

Backing Up Your Mini PC Home Server — Complete Guide | Mini PC Lab

By Mini PC Lab Team · January 28, 2026 · Updated March 27, 2026

This article contains affiliate links. If you purchase through our links, we may earn a commission at no extra cost to you. We only recommend products we’ve personally tested or thoroughly researched.

Mini PC home server backup guide hero image

A home server without backups is a risk you’re taking until the day it fails. NVMe drives fail. Mini PCs get dropped. Configuration gets corrupted. The backup strategy you set up today is the one you’ll thank yourself for in 18 months when something breaks. This guide covers practical backup approaches for every homelab setup — from a single Docker host to a full Proxmox cluster.

The 3-2-1 Backup Rule

The 3-2-1 rule is the minimum standard for any backup strategy:

  • 3 copies of your data
  • 2 different storage media (e.g., internal SSD + external drive)
  • 1 offsite copy (cloud, remote server, or a drive at a different physical location)

A mini PC with no external backup that fails takes your data with it. The 3-2-1 rule ensures a single failure never causes data loss.

For a home server, this looks like:

  1. Primary data on the mini PC’s NVMe
  2. Local backup to an external USB drive or NAS
  3. Offsite backup to Backblaze B2, Wasabi, or a remote server

Backup Strategy by Setup

For Docker-Only Setups (No Proxmox)

The critical data to back up is:

  • Docker volume data (the persistent data your containers write)
  • docker-compose.yml files (configuration)
  • Any custom configuration files

What you don’t need to back up:

  • Docker images — they can be re-pulled from the registry
  • The OS itself — reinstalling takes 20 minutes; recovering a corrupted system from backup often takes longer

Simple rsync backup for Docker volumes:

# Install rsync
sudo apt install -y rsync

# Backup Docker volumes and compose files to an external drive
rsync -avz --delete \
  /home/yourusername/services/ \
  /media/backup/server-backup/services/

# Backup to NAS
rsync -avz --delete \
  /home/yourusername/services/ \
  [email protected]:/mnt/tank/backups/server/

Automate with a cron job:

crontab -e

Add:

0 3 * * * rsync -avz --delete /home/yourusername/services/ /media/backup/server-backup/services/ >> /var/log/backup.log 2>&1

This runs the backup daily at 3am and logs output to /var/log/backup.log.

Stop containers before backup for consistency:

#!/bin/bash
# ~/scripts/backup.sh

# Stop all containers
docker compose -f /home/user/services/*/docker-compose.yml down

# Backup
rsync -avz --delete /home/user/services/ /media/backup/server-backup/services/

# Restart containers
for dir in /home/user/services/*/; do
  docker compose -f "${dir}docker-compose.yml" up -d
done

For Proxmox Setups

Proxmox VE has built-in backup capabilities. For a proper setup, add a Proxmox Backup Server (PBS).

Option A: Built-in Proxmox Backup (Simple)

Datacenter → Backup → Add:

  • Storage: local (or another storage destination)
  • Schedule: Daily at 3:00 AM
  • Selection: All VMs and containers
  • Mode: Snapshot (runs without stopping the VM)
  • Compression: ZSTD

This backs up all VMs and LXC containers to your chosen storage. Configure a retention policy:

  • Keep last: 7 daily, 4 weekly, 3 monthly

Restore a VM: Right-click the backup file in storage → Restore → select destination node.

Option B: Proxmox Backup Server (PBS)

PBS is a dedicated backup server application with deduplication, encryption, and efficient incremental backups. Run it as a dedicated mini PC or as a VM on a second node.

Install PBS on a spare machine:

# Add PBS repository
echo "deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription" >> /etc/apt/sources.list
apt update && apt install -y proxmox-backup-server

Access PBS at https://[PBS-IP]:8007.

Add PBS as storage in Proxmox:

Datacenter → Storage → Add → Proxmox Backup Server:

  • Server: PBS IP address
  • Username: admin@pbs
  • Password: your PBS admin password
  • Datastore: name of your PBS datastore

PBS provides:

  • Deduplication: 4× typical space savings on similar VMs
  • Encryption: client-side AES-256 encryption before transmission
  • Incremental backups: only changes since last backup are transferred
  • Verify task: periodically verifies backup integrity

Offsite Backups — The Critical Third Copy

Local backups protect against drive failure and accidental deletion. They don’t protect against fire, flood, theft, or a power surge that kills multiple components. Offsite backups do.

Restic is a fast, encrypted, deduplicated backup tool. Backblaze B2 costs $0.006/GB/month — a 100GB backup costs $0.60/month.

Install restic:

sudo apt install -y restic

Create a Backblaze B2 bucket:

  1. Sign up at backblaze.com
  2. Create a B2 bucket (private)
  3. Create an Application Key with read/write access to the bucket
  4. Note: keyID, applicationKey, and bucket name

Initialize the restic repository:

export B2_ACCOUNT_ID="your-keyID"
export B2_ACCOUNT_KEY="your-applicationKey"
export RESTIC_PASSWORD="your-encryption-password"  # Different from B2 credentials — this encrypts your data

restic -r b2:your-bucket-name init

Run your first backup:

restic -r b2:your-bucket-name backup \
  /home/yourusername/services/ \
  /etc/docker/

Automate:

# /etc/cron.d/restic-backup
0 4 * * * root \
  B2_ACCOUNT_ID="your-keyID" \
  B2_ACCOUNT_KEY="your-applicationKey" \
  RESTIC_PASSWORD="your-password" \
  restic -r b2:your-bucket-name backup \
  /home/user/services/ \
  --cleanup-cache \
  >> /var/log/restic.log 2>&1

# Weekly forget/prune (remove old backups to save space)
0 5 * * 0 root \
  B2_ACCOUNT_ID="your-keyID" \
  B2_ACCOUNT_KEY="your-applicationKey" \
  RESTIC_PASSWORD="your-password" \
  restic -r b2:your-bucket-name forget \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 6 \
  --prune \
  >> /var/log/restic.log 2>&1

Restore a file:

# List snapshots
restic -r b2:your-bucket-name snapshots

# Restore specific file
restic -r b2:your-bucket-name restore latest \
  --target /tmp/restore/ \
  --include /home/user/services/pihole/

Rclone + Wasabi (Alternative)

Wasabi costs $0.0069/GB/month with no egress fees. Rclone supports Wasabi and dozens of other cloud providers:

# Install rclone
curl https://rclone.org/install.sh | sudo bash

# Configure Wasabi
rclone config
# Follow prompts: S3-compatible, wasabisys.com endpoint, access key, secret key

# Sync backup directory to Wasabi
rclone sync /home/user/services/ wasabi:your-bucket/server-backup/

Backing Up Specific Services

Home Assistant

Home Assistant has a built-in backup mechanism. In Home Assistant OS (via Proxmox VM):

Settings → System → Backups → Create Backup

For automated backups with remote storage: Install the “Samba Backup” add-on or configure the Home Assistant → Backblaze integration.

Restore: From the Supervisor → Backup → Upload a backup.

Vaultwarden (Self-hosted Bitwarden)

Vaultwarden’s database is a SQLite file in the /data directory. Back it up frequently — it contains your passwords.

# Backup Vaultwarden data
rsync -avz ~/services/vaultwarden/vw-data/ /media/backup/vaultwarden/

Configure the automatic backup in docker-compose.yml:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    environment:
      ROCKET_ENV: production
      BACKUP_ENABLED: 'true'
      BACKUP_CRON: '0 0 * * *'   # Daily at midnight
      BACKUP_DIR: '/backup'
    volumes:
      - ./vw-data:/data
      - ./backup:/backup

Pi-hole

# Teleporter backup (full config export)
docker exec pihole pihole admin teleporter export /tmp/pihole-backup.tar.gz
docker cp pihole:/tmp/pihole-backup.tar.gz ~/backups/pihole/

# Restore: Admin UI → Settings → Teleporter → Restore

Testing Your Backups

A backup you haven’t tested is not a backup.

Schedule quarterly restore tests:

  1. Pick a non-critical service
  2. Stop the container
  3. Delete its data directory
  4. Restore from backup
  5. Verify the service works correctly
# Example: test Pi-hole restore
docker compose -f ~/services/pihole/docker-compose.yml down
rm -rf ~/services/pihole/etc-pihole/
rsync -avz /media/backup/server-backup/pihole/etc-pihole/ ~/services/pihole/etc-pihole/
docker compose -f ~/services/pihole/docker-compose.yml up -d
# Verify Pi-hole works: access admin UI, check that blocklists loaded

Also verify your offsite backup is readable:

# Check restic backup integrity
restic -r b2:your-bucket-name check

Backup Storage Sizing

How much storage do you need for backups?

Rule of thumb for Docker setups:

  • Service config files: ~100–500MB total
  • Container data (databases, configs): 1–20GB typical
  • Media files (Plex/Jellyfin library): DON’T back up to cloud — too large, re-downloadable

For Proxmox VM backups:

  • Each VM backup: 80% of the VM’s disk size (compression typically saves 20%)
  • 5 VMs × 20GB each = ~80GB of backup storage per backup set
  • With 7 daily + 4 weekly retention: plan for 10× the single backup size = ~800GB for the retention window


→ Check Current Price: Beelink EQ14 on Amazon — low-cost primary or secondary Proxmox Backup Server node, 6W idle → Check Current Price: Beelink SER9 PRO+ on Amazon — 8-core Ryzen, handles full Proxmox + PBS simultaneously → Check Current Price: Minisforum MS-01 on Amazon — 10GbE for fast local backup transfers to NAS

See also: best mini PC for home server guide | mini PC NAS setup with TrueNAS guide | how to install Proxmox on mini PC