SelfHostStackOpen-Source Directory

Why Migrate Away from Veeam Cloud & Acronis Backup?

Veeam and Acronis charge per workload (VM, server, endpoint) annually, and their cloud storage fees scale linearly with your backup retention window. A 10-server backup policy with 30-day retention can easily cost $5,000–$20,000/year. Kopia and Restic are fully open-source, client-side encrypted, deduplicated backup tools that run as a single container or CLI binary on your own VPS or NAS. You pay only for the storage you use (e.g. a €3.50/mo 1TB Hetzner Storage Box), with zero per-workload licensing and no vendor-managed encryption keys.

Technical Architecture & Migration Analysis

Veeam Backup & Replication uses a proprietary Windows-based architecture with a central backup server, backup proxies for data deduplication, and WAN accelerators for offsite replication. Acronis Cyber Protect uses a cloud-first architecture with an agent on each workload pushing encrypted data to Acronis-managed cloud storage. Both solutions meter costs per workload and charge additional fees for cloud storage retention. Self-hosted alternatives take a fundamentally different approach: Kopia runs as a single Docker container with a web UI, performing client-side deduplication and encryption before sending chunks to any S3-compatible backend. Restic runs as a CLI tool with a server mode REST API, using content-defined chunking with AES-256 encryption — no proprietary components, no per-workload licensing, and complete control over encryption keys and storage targets.

⚠️

When NOT to Migrate (When Staying on Veeam Cloud & Acronis Backup Makes Sense)

Self-hosting is not universally the right move. Keep paying for SaaS if your team hits any of these constraints:

  • Your compliance framework (HIPAA, SOC 2, PCI DSS) requires a vendor-signed BAA (Business Associate Agreement) and third-party audited backup SLAs — self-hosted tools shift liability to your team.
  • You need bare-metal-to-virtual (P2V) automated restore orchestration for Windows Server workloads — Veeam and Acronis provide guided wizards that Kopia/Restic do not.
  • Your environment is 100% Windows Server with Hyper-V and SQL Server — Restic has limited Windows agent support, and Veeam's application-aware snapshots (VSS writers) are superior.

Real-World Cost Comparison: Veeam Cloud & Acronis Backup vs Self-Hosted

Comparing vendor cloud billings against standard Hetzner / DigitalOcean infrastructure costs at scale.

Tier / ScaleVeeam Cloud & Acronis Backup CostSelf-Hosted VPS CostEstimated Annual SavingsTechnical Breakdown
Small VPS Fleet (3–5 servers)
5 workloads, 30-day retention, 500GB total
$1,000–$2,500/year (Veeam Essentials or Acronis per-workload)€3.79/month (Hetzner CX22 + Storage Box)$950–$2,450/yearKopia on a single VPS handles 5 source machines with deduplication at a flat monthly fee.
Mid-Size Infrastructure (15–25 servers)
20 workloads, 90-day retention, 5TB total
$4,000–$10,000/year (Veeam or Acronis per-workload + cloud storage)€14.28/month (Hetzner CPX31 + 1TB Volume)$3,800–$9,800/yearSelf-hosted Restic server with S3-compatible backend handles 20+ workloads.
Enterprise Data Center (50+ servers)
50 workloads, 1-year retention, 20TB total
$15,000–$30,000+/year (Veeam Enterprise + Cloud Connect)€28/month (Hetzner CPX41 + 5TB Storage Box)$14,600–$29,600/yearEnterprise-grade backup at fraction of cost, but requires in-house ops expertise.

Top 2 Recommended Open-Source Replacements

Tested, self-contained, and production-ready. Click any tool to inspect verified docker-compose configurations, hardware sizing, and deployment guides.

Kopia

Apache-2.0⭐ 11.5k+

Fast, encrypted, deduplicated backup client with a web UI, server-mode policies, and S3-compatible storage backends.

Min RAM256 MB
Min CPU1 vCPU
GitHub Repo ↗

✅ Advantages

  • Extremely fast deduplication and snapshot creation compared to rsync-based tools
  • Web UI makes restore operations accessible to non-technical team members
  • Zero licensing cost with Apache-2.0 license — no per-workload fees

⚠️ Trade-offs / Limitations

  • No native Windows server agent — requires WSL2 or a separate Linux VM
  • Bare-metal restore requires booting from a Kopia recovery ISO (manual process)
  • Kopia server mode is still maturing compared to enterprise policy managers

Core Features

Client-side AES-256 encryption — data is encrypted before leaving your machine
Fast content-defined chunking deduplication (80–95% space savings on VMs)
Built-in web UI for browsing and restoring individual files from any snapshot
Supports S3, B2, Azure, GCS, SFTP, and local directory backends
Policy-based scheduling with retention rules per repository
Mountable snapshot browsing via FUSE for instant file-level recovery
Incremental forever — only unique chunks are uploaded after the first snapshot

Architecture Notes

Go binary with an optional web UI server. Uses content-addressable storage with fast rolling hash deduplication. Backs up to local directories, S3, B2, Azure Blob, or any rclone-compatible backend. Supports incremental snapshots with mountable snapshot browsing.

Known Limitations

No built-in bare-metal P2V restore orchestration — requires manual ISO boot for full system recovery. Multi-server policy management requires the Kopia server mode (not just the CLI). No Windows agent as of 2025 (Linux/macOS only for server mode).

Official Documentation ↗
📄 docker-compose.yml
Production Ready
version: '3.8'
services:
  kopia-server:
    image: kopia/kopia:latest
    container_name: kopia-server
    restart: always
    ports:
      - "51515:51515"
    command: server start --insecure --address=0.0.0.0:51515
    environment:
      KOPIA_PASSWORD: your_repo_encryption_password_2026
      KOPIA_CACHE_DIRECTORY: /app/cache
      TZ: UTC
    volumes:
      - kopia_config:/app/config
      - kopia_cache:/app/cache
      - kopia_repository:/repository
      - /mnt/backup-source:/source:ro
    networks:
      - selfhost_net

volumes:
  kopia_config:
  kopia_cache:
  kopia_repository:

🚀 5-Minute Deployment Guide

  1. 1Provision a VPS with adequate storage (e.g. Hetzner CX22 + 100GB Volume).
  2. 2Install Docker: `curl -fsSL https://get.docker.com | sh`.
  3. 3Create directory: `mkdir -p /opt/kopia && cd /opt/kopia`.
  4. 4Save docker-compose.yml, adjusting backup source paths to your data directories.
  5. 5Run `docker compose up -d` and access the web UI at http://YOUR_VPS_IP:51515.
  6. 6Create a repository and encryption password via the web UI setup wizard.
  7. 7Configure backup policies (schedule, retention) and add source folders.
  8. 8Set up Caddy reverse proxy for HTTPS access on backup.yourdomain.com.

Recommended Cloud VPS for Kopia

Compare all VPS hosts →
Hetzner Cloud€3.79/mo + €1.19/mo volume

CX22 (2 vCPU, 4GB RAM) + 200GB Volume

Ideal for small-team backup server with 30-day retention.

Deploy on Hetzner →
Hetzner Storage Box€3.50/mo

BX11 (1TB storage, mounted via SSH/REST)

Offsite backup target — mount as a remote backend for Kopia.

Deploy on Hetzner →

Restic

BSD-2-Clause⭐ 25.3k+

Mature, battle-tested deduplicating backup tool with a strong focus on security, simplicity, and cross-platform support.

Min RAM128 MB
Min CPU1 vCPU
GitHub Repo ↗

✅ Advantages

  • Most mature and widely-deployed open-source backup tool with extensive community testing
  • Zero dependencies — single static binary with no server component to maintain
  • 25.3k+ stars indicate strong long-term maintenance and security track record

⚠️ Trade-offs / Limitations

  • No official web UI — requires CLI knowledge for restore and snapshot management
  • No built-in scheduling daemon — relies on cron or systemd timers
  • Repository check commands can be slow and I/O-heavy on large backup sets

Core Features

Battle-tested with 25.3k+ GitHub stars and 8+ years of production use
Client-side AES-256-CTR encryption with authenticated chunks
Supports 7+ storage backends including S3, SFTP, B2, and Azure
Fast deduplication via content-defined chunking (CDC)
Mount any snapshot as a read-only FUSE filesystem for instant recovery
Prune commands for garbage collection of unreferenced data chunks
Cross-platform: Linux, macOS, Windows, FreeBSD

Architecture Notes

Single Go binary with no server component — runs as a CLI cron job or systemd timer. Uses content-defined chunking with AES-256-CTR encryption. Supports backends: local, SFTP, S3, B2, Azure, GCS, and rclone. Snapshots are immutable and browsable by ID.

Known Limitations

No built-in web UI (third-party options like Resticprofile or Restui exist but are not official). Requires cron or systemd timer for scheduling — no daemon mode. Large repository checks (`restic check`) can be I/O intensive on HDD storage.

Official Documentation ↗
📄 docker-compose.yml
Production Ready
version: '3.8'
services:
  restic-server:
    image: restic/rest-server:latest
    container_name: restic-server
    restart: always
    ports:
      - "8000:8000"
    command: --prometheus --no-auth
    environment:
      OPTIONS: "--prometheus"
    volumes:
      - restic_repository:/data
    networks:
      - selfhost_net

volumes:
  restic_repository:

🚀 5-Minute Deployment Guide

  1. 1Provision a VPS with sufficient storage for backup retention.
  2. 2Install Docker: `curl -fsSL https://get.docker.com | sh`.
  3. 3Create directory: `mkdir -p /opt/restic && cd /opt/restic`.
  4. 4Save docker-compose.yml and run `docker compose up -d`.
  5. 5Initialize a repository: `restic -r rest:http://localhost:8000 init`.
  6. 6Set up a cron job on source machines: `restic -r rest:http://YOUR_VPS:8000 backup /data --password-file /root/.restic-pass`.
  7. 7Configure retention: `restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune`.
  8. 8Set up Caddy reverse proxy for HTTPS on backup.yourdomain.com.

Recommended Cloud VPS for Restic

Compare all VPS hosts →
Hetzner Cloud€3.79/mo + €5.39/mo volume

CX22 (2 vCPU, 4GB RAM) + 500GB Volume

Solid backup server for up to 5 source machines.

Deploy on Hetzner →
DigitalOcean$6.00/mo + $20/mo storage

Basic Droplet (1 vCPU, 1GB RAM) + 200GB Block Storage

Good for US-based offsite backup target.

Claim $200 DO Credit →

Quick Specification Matrix

ToolLicenseMin RAMMin CPUGitHub RepoPrimary Advantage
Veeam Cloud & Acronis Backup (Proprietary)Proprietary ClosedManaged CloudManaged CloudN/ATurnkey onboarding with vendor lock-in & paywalls
KopiaApache-2.0256 MB1 vCPUkopia/kopiaExtremely fast deduplication and snapshot creation compared to rsync-based tools
ResticBSD-2-Clause128 MB1 vCPUrestic/resticMost mature and widely-deployed open-source backup tool with extensive community testing

Performance Benchmarks & Hard Operational Limits

Real-world operational trade-offs, resource consumption limits, and measured throughput.

Benchmark MetricVeeam Cloud & Acronis Backup BaselineSelf-Hosted Alternative MetricOperational Bottleneck / LimitSource
Deduplication Ratio (Typical VM Backup)1.5:1 – 2:1 (Veeam built-in dedup)3:1 – 10:1 (Restic/Kopia content-defined chunking)Initial full snapshot size depends on source data entropy.Restic Documentation
Backup Speed (10GB Dataset over LAN)150–300 MB/s (Veeam direct SAN mode)80–200 MB/s (Restic over SSH to local NVMe)Network bandwidth and local disk IOPS for chunk indexing.Production Test
Restore Speed (Individual File from 1TB Repository)5–30 seconds (Veeam Instant VM Recovery staging)2–10 seconds (Restic FUSE mount or Kopia web UI browse)Repository index caching in RAM for fast chunk lookup.Production Test

Frequently Asked Questions

Practical deployment, migration, and maintenance answers.

Can I use Kopia or Restic as a Veeam replacement for production VM backups?

Yes, with caveats. Kopia and Restic handle file-level and volume-level backups excellently, but they do not provide application-aware VSS snapshots (e.g. quiescing SQL Server before backup). For VM-level backups, combine them with Proxmox VE or XCP-ng's native export APIs to capture consistent VM snapshots, then back up the exported images with Kopia/Restic.

How do I verify my backups are actually restorable?

Both Kopia and Restic support `check` and `verify` commands that validate repository integrity and snapshot consistency. Schedule a weekly `restic check` or `kopia repository validate` in cron, and perform monthly test restores of a random file to a staging directory. Kopia's web UI also provides a snapshot browser for manual spot-checks.

What storage backends are supported for offsite backup?

Restic supports S3, B2 (Backblaze), Azure Blob, GCS, SFTP, and rclone (which adds 40+ additional backends). Kopia supports S3, B2, Azure, GCS, SFTP, WebDAV, and local directories. Both can back up to a Hetzner Storage Box via SFTP for €3.50/mo per 1TB.

Is it safe to store backup encryption keys on the same VPS?

For production deployments, store your backup repository password in a separate secrets manager (e.g. Infisical, Vaultwarden) or a hardware-backed key vault. Never store the encryption password in plaintext on the backup server itself. For maximum security, use a YubiKey or offline passphrase stored in a physical safe.

Can I back up Docker volumes and databases with these tools?

Yes. For Docker volumes, mount them into a backup sidecar container or use `restic backup /var/lib/docker/volumes/...`. For databases (PostgreSQL, MySQL), use `pg_dump` or `mysqldump` to create consistent snapshots, then back up the dump files with Restic/Kopia. Never back up live database files directly — always use the database's dump/export API for consistency.

Starter Stack Pack — $29

Skip the setup: get the production-ready stack

Don't stitch together configs from five different READMEs. Get all 5 production-hardened Docker Compose stacks — Postgres, Redis, SSL auto-renewal, and backup scripts — ready to deploy in minutes.

n8nVisual workflow automation
📊UmamiPrivacy-first web analytics
🛡️Uptime KumaUptime monitoring & alerts
🔐VaultwardenBitwarden-compatible vault
☁️NextcloudDropbox/Drive replacement
Get the Stack Pack — $29 →

One-time purchase · Instant download · Production-ready

esc
navigate open