The number that decides it isn't storage. It's egress.
Do the arithmetic and self-hosting object storage looks cheaper than AWS S3 by an embarrassing margin. S3 Standard runs $0.023/GB-month for the first 50 TB — call it $23.55/TB-month, roughly $282 per terabyte per year before a single byte leaves the bucket. A 24 TB enterprise HDD costs about $240 today, under $18/TB at scale. One drive holds a terabyte for what S3 charges to store it for three weeks. On paper the hardware pays for itself almost instantly.
"On paper" is carrying the whole sentence. Drives are the cheap part. The expensive parts never appear on an invoice: your time, the redundancy you'll skip until it bites, and the bandwidth bill the hyperscalers built their margins on. Here's the honest crossover.
Where is cloud pricing genuinely indefensible?
Egress. AWS charges $0.09/GB to move data out to the internet after a 100 GB monthly freebie, tapering to $0.05/GB only once you clear 150 TB/month. Pull a 10 TB dataset out of S3 once and you've paid roughly $900 in transfer fees alone, on top of storage. Bandwidth at a German datacenter is a rounding error; that $900 isn't the cost of moving bits, it's the cost of a moat. Egress is the toll that makes leaving expensive, which is exactly why the EU is dismantling it: under the Data Act, providers must stop charging switching and egress fees entirely from 12 January 2027. Until then, the meter runs.
If your workload reads heavily — serving files, re-processing the same archive, shuffling data between regions — the egress line dwarfs the storage line and self-hosting wins by a margin that isn't close. A box in a rack with a flat-rate uplink doesn't care how many times you read your own data.
The S3-compatible flat-rate crowd already worked this out. Backblaze B2 is $6/TB-month with egress free up to 3x your stored volume. Wasabi is $6.99/TB-month — rising to $7.99 on 1 July 2026 — with no egress fee inside a 1:1 fair-use ratio, though it pins you to a 90-day minimum storage duration and a 1 TB floor. Both run a quarter of S3's storage rate and kill the egress shakedown. If your actual complaint is "AWS is too expensive," the cheapest correct answer is usually a different cloud, not a server in your basement.
What does self-hosting actually cost?
Run the 24 TB comparison honestly and the picture moves. You don't run one drive. A single disk holding your only copy isn't storage, it's a countdown. Real 3-2-1 means a primary array with two-disk fault tolerance — RAID-Z2 or equivalent, so about four drives to net 24 TB usable — plus a second machine and an off-site copy. That's three to four times the raw drive count before you've stored anything. Then a chassis, ECC RAM, a UPS, and a replacement budget, because HDDs have an annualised failure rate and at any meaningful count you will swap one or two a year.
Power is next. German electricity sits around 32–35 ct/kWh for ordinary customers in 2026. A datacenter pays far less; your closet doesn't. A modest always-on server pulling 60–100 W costs €150–300/year just to stay lit. And then the line item that quietly outweighs the rest:
Your hourly rate, times the hours spent patching the OS, rotating disks, testing restores, chasing a flaky SMART warning at 2am, and rebuilding an array after a failure. Storage that nobody operates is storage that quietly stops being a backup.
Price ops time at even a junior rate and a few hours a month erases the hardware savings on anything small. That's the real break-even. Self-hosting wins on cost-per-TB at volume; the cloud wins on cost-per-hour-of-your-attention.
The honest break-even table
| Scenario | Self-host | Hyperscaler (S3) | Flat-rate cloud (B2/Wasabi) |
|---|---|---|---|
| Small (1–5 TB), low read | Loses — per-TB overhead too high | Loses — overpriced | Wins — cheap, zero ops |
| Large archive (50 TB+), rarely read | Wins — drives amortise fast | Loses badly | Competitive |
| Egress-heavy (re-read often) | Wins decisively | Loses on egress alone | Wins (free egress within ratio) |
| You bill clients for downtime | Risky — you're the SLA | Wins — someone else's pager | Wins |
The pattern: self-hosting is a volume-and-control play, not a convenience one. It pays off when you have tens of terabytes, a tolerance for being your own on-call, and a read pattern that would otherwise bleed egress. It loses when the data is small, when uptime matters more than the margin, or when your time is worth more than the drives.
The thing the cost model leaves out: who can read your files
Cost is one axis. Plenty of self-hosters built the box for a different reason — not price, but not wanting a US provider holding their data in plaintext. That's a legitimate motivation, and self-hosting solves it absolutely: your data, your keys, your rack. It just solves it by handing you the entire operational burden, off-site copy included, the one you swore you'd set up and didn't.
There's a middle path the pure cost table misses: client-side encryption against a flat-rate, EU-hosted backend you don't have to operate. That's the model we built. Files are encrypted with AES-256-GCM in the client before upload, keys derived with Argon2id and never sent to the server, so the storage operator (us, in Falkenstein, Germany) holds ciphertext and nothing else. You get the zero-knowledge property that drives a lot of homelab builds without owning the disks, the UPS, or the 2am array rebuild. The CLI and WebDAV access through it mean you can script it like any object store; native desktop and mobile sync are coming, not shipped, which I'd rather state plainly than imply. Pricing is flat per terabyte (€10.99/extra TB, up to 99 TB self-serve, custom quote beyond), and because the clients are open source you can read exactly what the encryption does instead of trusting a datasheet.
Run the numbers for your own read pattern before you buy a chassis. Sitting on 80 TB of cold archive with a flat uplink? Build the box — the math is on your side. At 3 TB, where the real appeal was "I don't want AWS reading my files," the drives were never the point, and a server you have to babysit is a worse answer than encryption you control.