This one picks up right after my original homelab post, where I went from CGNAT hell to a full Dell OptiPlex setup running my portfolio, my girlfriend's site, my mom's site, and a Minecraft server my girlfriend and I still play on together. That self-hosted server is still running everything it always has. This post is about a narrower, separate problem: where to put the images that go into blog posts here on humfurie.org.
October 2025: Trying R2 Instead of S3
Around October 2025, I decided to try Cloudflare R2 for exactly that, hosting the blog post images for this site. Not a replacement for my self-hosted server, just cloud storage for one specific job: serving images fast to anyone reading a post, wherever they are.
That's where S3 came into the conversation and immediately lost it. R2 solved it for close to nothing. Standard storage runs $0.015/GB per month, and egress, the fee for actually serving a file out to a viewer, is $0.00. S3's storage runs pricier per GB, and its egress fees would have made every single image load on this blog cost me money on top of already being slower. Same S3-compatible API, so I didn't have to rewrite anything to try it. Free, faster, and a drop-in fit. There was no contest.
So When Would I Actually Use S3?
Not never, but only under one specific combination of conditions: if I eventually migrate my whole setup off self-hosted hardware and onto an EC2 instance, and doing so stops being a meaningful expense and starts being pocket change. At that point, paying AWS for the convenience of a fully managed EC2 and S3 stack starts to look like a reasonable trade for my time instead of a hole in my budget. Until then, R2 for blog images plus a self-hosted server for everything else is just objectively the better use of money.
That's really the whole calculation. EC2 and S3 aren't bad services, they're just a purchase that only makes sense once I can treat it as a leisure expense rather than a necessity, the same way I couldn't justify EC2 back in that jobless January but might genuinely want it once cost stops being the deciding factor. R2 didn't just win on price this time, it won because it let me put off that whole AWS decision indefinitely.
For what it's worth, GCP was never in this conversation to begin with. Between what I ran into touching it directly in 2024 and 2025 and the sheer number of billing horror stories I've read since (forgotten keys and default settings turning into five-figure invoices overnight), it's not something I'd trust with anything that matters, paid tier or not.
The Actual Lesson
My self-hosted server still handles everything it always did. R2 just took over one specific job, keeping this blog's images fast and cheap, without needing EC2 or S3 to do it. EC2 and S3 aren't off the table forever, they're just waiting for the point where paying for them stops being a real tradeoff.