When to Move Your Homelab Workload to AWS (And When Not To)

When does moving workloads to AWS actually save money? Real cost comparison, decision framework, and hybrid setup recommendations for homelab operators.

Cost comparison table showing homelab hardware versus AWS pricing for always-on compute and burst GPU workloads

You built your homelab because you wanted control. Your own hardware, your own network, your own rules. But at some point a question creeps in: should some of this run in the cloud instead?

Maybe your ISP went down and took your self-hosted services with it. Maybe you need a GPU for a weekend AI experiment but don’t want to buy a €600 card that sits idle. Maybe you’re tired of being your own on-call engineer at 2 AM when a drive fails.

This isn’t a “cloud is better” article. I’ve run both for years — enterprise SAP infrastructure on AWS by day, a full homelab stack at home. The answer is almost never “move everything.” It’s about knowing which workloads belong where, and having the numbers to back that decision up.

The real cost of your homelab

Before comparing anything to AWS pricing, you need to know what your homelab actually costs. Most people dramatically underestimate this.

Hardware amortization

That mini PC you bought for €350 doesn’t last forever. Assume a 4-year useful life for compute hardware and 5 years for storage:

Mini PC (N100, 16GB, 500GB NVMe):  €350 / 48 months = €7.30/month
NAS (4-bay, diskless):              €400 / 60 months = €6.67/month
4x 4TB drives:                      €400 / 60 months = €6.67/month
UPS:                                 €120 / 60 months = €2.00/month
Switch + cabling:                    €80 / 60 months  = €1.33/month
─────────────────────────────────────────────────────────────────
Total hardware amortization:                           ~€24/month

Electricity

A typical homelab draws 40–80W idle. At European electricity rates (roughly €0.30/kWh):

60W average × 24h × 30 days = 43.2 kWh/month
43.2 kWh × €0.30 = €12.96/month

Under load — running AI models, transcoding media, compiling — expect 100–150W peaks that push this to €15–20/month.

Your total real cost

ItemMonthly cost
Hardware amortization~€24
Electricity~€13–20
Internet (portion)~€5–10
Replacement parts / upgrades~€5
Total€47–59/month

That’s the number to beat. If an AWS setup costs less than this for equivalent capability, the cloud wins on price alone. Spoiler: for always-on general workloads, it rarely does. But for burst compute, it absolutely can.

What AWS actually costs for small-scale use

Let’s price out equivalent setups. All prices are EU (Frankfurt, eu-central-1) region, on-demand unless noted.

Always-on compute

A t3.small (2 vCPU, 2GB RAM) — the minimum for running a few Docker containers:

t3.small on-demand:      €0.023/hr × 730 hrs = €16.79/month
30GB gp3 EBS storage:                          €2.76/month
Elastic IP:                                     €3.65/month (if not attached to running instance)
Data transfer (50GB out):                       €4.50/month
──────────────────────────────────────────────────────────
Total:                                          ~€28/month

That gets you 2GB of RAM. Your €350 mini PC has 16GB. A t3.xlarge (4 vCPU, 16GB) to match? That’s €73/month on-demand. With a 1-year reserved instance you’re looking at around €45/month — still comparable to your homelab total cost, but with far less storage and no GPU.

Burst GPU compute

This is where AWS shines. A g5.xlarge (1 NVIDIA A10G GPU, 24GB VRAM) on a spot instance:

g5.xlarge spot price:    ~€0.35/hr (fluctuates)
2 hours/day × 30 days:   €21/month

Compare that to buying an RTX 4070 (€550) that you use 2 hours a day — you’d need to run it for 26 months before the card pays for itself vs. spot pricing. If you only need GPU compute occasionally, spot instances win.

Storage

S3 is almost always cheaper than local storage for archival data:

1TB S3 Standard:                     €23.55/month
1TB S3 Glacier Instant Retrieval:    €4.10/month
1TB S3 Glacier Deep Archive:         €1.02/month

Compare to a 4TB NAS drive at €100 amortized over 5 years: €1.67/month per TB. Local storage is cheaper per TB for hot data you access constantly, but S3 Glacier wins for backups and archives you rarely touch — and it doesn’t require electricity or hardware replacement.

The decision framework

After running both environments, I’ve landed on a simple framework. Every workload falls into one of four quadrants:

Run locally: always-on + data-heavy

These workloads run 24/7 and move lots of data around. Cloud costs scale linearly with time and bandwidth, making them expensive.

Examples:

  • Media servers (Jellyfin, Plex) — streaming terabytes locally is free, data transfer from AWS is not
  • Home automation (Home Assistant) — needs local network access and low latency
  • NAS / file storage — local storage is 5–10× cheaper for hot data
  • Ad blocking / DNS (Pi-hole, AdGuard) — must be on-network
  • Local AI inference for daily use — if you’re running models multiple hours per day, owning the GPU wins

Run in the cloud: burst compute + public-facing

These workloads either need power you don’t own, or need to be reachable even when your home internet is down.

Examples:

  • AI model experimentation with large models (70B+) that exceed your local VRAM
  • Public-facing websites and APIs (uptime matters, your ISP doesn’t care)
  • CI/CD runners (burst compute, pay only when pipelines run)
  • Offsite backups (S3 Glacier is cheaper than a second NAS at another location)
  • VPN entry points (AWS as a stable public endpoint for WireGuard tunnels back home)

Hybrid: split the workload

Some services work best with a foot in each world:

  • Monitoring: Prometheus scrapes locally, Grafana dashboard on a cheap EC2 instance accessible from anywhere
  • Reverse proxy: Traefik or Caddy on AWS as a public entry point, tunneled back to services running on local hardware
  • Backups: Local snapshots for fast recovery + S3 Glacier for disaster recovery
  • Development: Code and test locally, deploy to AWS for staging/production

Don’t bother: cloud-native overkill

Some AWS services are designed for enterprise scale and aren’t worth the complexity for a solo operator:

  • ECS/EKS for a handful of containers — Docker Compose is fine, and ECS adds €30–60/month in orchestration overhead plus hours of setup
  • RDS for a single Postgres database — a managed instance starts at €25/month; a container on your existing EC2 costs nothing extra
  • CloudWatch for monitoring 2 servers — Prometheus is free, more flexible, and doesn’t charge per metric ingestion
  • Lambda for workloads that run constantly — a function running 24/7 costs more than a t3.micro EC2 instance and is harder to debug

A practical hybrid setup

Here’s what I’d recommend as a starting point for someone with an existing homelab who wants to extend into AWS:

LOCAL (homelab)                    AWS
├── Docker host (always-on)        ├── t3.micro (reverse proxy + VPN endpoint)
├── NAS (media + file storage)     ├── S3 Glacier (offsite backups)
├── Ollama (daily AI inference)    ├── Spot GPU (occasional large model runs)
├── Home Assistant                 └── Route 53 (DNS)
├── Prometheus + Grafana
└── Pi-hole

Total added AWS cost: roughly €8–15/month for the always-on pieces, plus spot costs when you need GPU compute.

The homelab handles data-heavy, always-on, latency-sensitive work. AWS handles public availability, offsite redundancy, and burst compute you can’t justify buying hardware for.

When to reconsider

Revisit this decision when:

  • Your electricity costs spike — if rates go above €0.40/kWh, cloud compute starts looking better for lighter workloads
  • You need high availability — if downtime costs you money (a consulting business, a SaaS product), the reliability premium of AWS is worth it
  • You’re traveling long-term — running infrastructure from a laptop over hotel WiFi is miserable; shift more to the cloud
  • A hardware failure hits — replacing a dead motherboard at 2 AM puts the “just use the cloud” argument in sharp focus

The bottom line

Your homelab isn’t a sunk cost — it’s a genuine advantage for always-on, data-intensive, local-network workloads. AWS isn’t a replacement for it. It’s an extension.

Use the cloud for what it’s good at: burst compute, public endpoints, offsite storage, and high availability. Keep everything else local where it’s cheaper and under your control.

The rest of this series will show you exactly how to set up that hybrid stack — starting with production-grade backups to S3 for under €2/month.

Frequently Asked Questions

Is it always cheaper to self-host than to use AWS?
For always-on compute with predictable load, a homelab is almost always cheaper — a mini PC running 24/7 costs €15-40/year in electricity and has no per-request fees. AWS becomes cost-competitive for burst workloads, intermittent GPU jobs, or services that need global availability, where you only pay for what you use.
What homelab workloads make the most sense to move to AWS?
Workloads that are intermittent and resource-intensive — like running 70B AI models, large video transcoding jobs, or load testing — are ideal for AWS spot instances. Also consider AWS for anything that needs a public IP and low latency globally, like a public API or website with international visitors.
What is a hybrid homelab and cloud setup?
Running some workloads locally (always-on services like Grafana, Nextcloud, Ollama) while offloading others to AWS (backups to S3, burst compute on spot instances, public-facing endpoints on EC2). The homelab handles private, continuous workloads; AWS handles what needs elasticity or global reach.
How do I estimate my AWS costs before moving a workload?
Use the AWS Pricing Calculator at calculator.aws. For EC2, enter your expected instance type, hours per month, and region. Add S3 storage and data transfer costs if applicable. The calculator gives a monthly estimate before you commit to anything — run the numbers before migrating.

Get notified when new articles and designs land:

No spam. Unsubscribe any time.

Sergej Voronko
Sergej Voronko
SAP Basis · Senior Operations Manager · Linux infrastructure engineer
About the author →

[discussion]

Comments are powered by Giscus — backed by GitHub Discussions. Sign in with GitHub to join the conversation.