Why I Built a Fully Self-Hosted Backup System Instead of Paying for Cloud Storage

My Self-Hosted Backup Setup with Proxmox Backup Server | BugzCloud.xyz

← Blog  ·  Homelab  ·  Self-Hosting

My Self-Hosted Backup Setup with Proxmox Backup Server

For a while I was doing what most people do — relying on a combination of cloud storage and hoping for the best. Not a real backup strategy, just a vague feeling that things were probably fine. When you’re running a homelab with VMs, containers, and services you actually depend on day to day, that stops being acceptable pretty quickly.

I eventually got around to building a proper backup setup using Proxmox Backup Server running on a small dedicated machine. It took a weekend to get right but now it just runs quietly in the background doing its thing. This is what I built, why I built it this way, and what I’d do differently if I were starting over.

The Hardware

I didn’t want to spend a lot on the backup server itself. It runs 24/7 but it doesn’t need to be fast — it just needs to be reliable, power efficient, and have enough storage to actually hold backups. A Dell OptiPlex 3060 Micro hit all of those marks.

// backup server specs:
Dell OptiPlex 3060 Micro
Intel i5-8500T (low power, 6 cores)
500GB SATA SSD — OS drive
1TB NVMe SSD — performance layer
4TB HDD — backup repository

These small form factor business machines are underrated for homelab use. They’re quiet enough to sit in a living room, they sip power compared to a full tower, and the i5-8500T specifically is a solid low-wattage chip that handles the compression and deduplication workload without breaking a sweat. I picked one up used for well under $200 and added the drives separately.

The 4TB spinning disk is where the actual backups live. HDDs are still the cheapest option per gigabyte for this kind of workload — the data sits there, gets written occasionally, and doesn’t need fast random reads. It does the job.

Why Proxmox Backup Server

The short answer is that my entire homelab runs on Proxmox VE already, so PBS was the obvious choice. The integration is native — you add it as a storage target in your Proxmox cluster and from that point backup jobs are just a few clicks to configure. No third-party agents, no weird compatibility issues.

The longer answer is that PBS does a few things really well that matter for this kind of setup. Incremental backups mean after the first full backup, subsequent runs only send what changed. That keeps backup windows short and storage usage reasonable. Deduplication on top of that means if you have ten VMs sharing similar base OS files, you’re not storing ten copies of the same data — just one copy with references.

Restores are fast. That part matters more than people realize until they actually need to restore something. Pulling a VM back from a local PBS instance takes minutes. Pulling it from a cloud backup can take hours depending on your connection and how much data is involved.

// what PBS gives you:
Incremental backups — only changed data after the first run
Deduplication — massive storage savings over time
Compression — smaller footprint on disk
Retention policies — automatically prune old backups
Encryption — data protected at rest
Fast local restores — minutes, not hours

Storage Layout

I kept the storage layout simple on purpose. The OS runs on the 500GB SATA SSD — more than enough for the PBS installation and its metadata. The 1TB NVMe handles the chunk store index and any temporary operations that benefit from faster IO. The 4TB HDD is the actual backup repository where all the data lives.

Could I have consolidated some of this? Probably. But separating OS from data from performance layer makes the whole thing easier to reason about and easier to expand later. If I fill up the 4TB I just add another drive to the repository. No reconfiguring anything else.

Why I Don’t Use Cloud Backups

I’ve used cloud backup services before and they work fine for certain things. But for a homelab running multiple VMs they stopped making sense for me pretty quickly.

The Cost Compounds

Cloud storage pricing looks reasonable until you actually start storing meaningful amounts of data. Then it compounds. You’re paying monthly forever, the bill grows as your data grows, and if you ever want to get a large restore you’re either waiting a very long time or paying egress fees on top of the storage costs. The upfront cost of a small dedicated backup machine with a 4TB drive pays for itself in a year or two compared to most cloud options.

Restore Speed Is Not a Joke

If something goes wrong in my homelab at midnight and I need to restore a VM, I want it back in ten minutes, not two hours. Local restores from PBS are genuinely fast. That speed difference is the thing cloud backup advocates tend to gloss over when comparing options.

Everything Stays Local

All my data stays on hardware I own, in my house, under my control. No third party can access it, no service can go down and take my backups with it, no policy change can affect my retention. That matters to me more than the convenience of cloud access from anywhere.

One thing worth saying clearly: local backups alone are not a complete strategy. If the house burns down or something takes out both your main server and your backup server at the same time, you lose everything. I keep copies of the most important stuff offsite too. A self-hosted setup is excellent but it shouldn’t be your only copy.

Power and Noise

This machine runs around the clock so I cared about power consumption. The i5-8500T is rated at 35W TDP and in practice the whole system pulls somewhere around 15-25W at idle, which is what it’s doing most of the time. Over a full year that’s a pretty small addition to the electricity bill.

Noise is basically nothing. It sits in the same room as my main server and I genuinely forget it’s there most of the time. Small form factor machines like this are well suited to any space where a full rack or tower would be disruptive.

Final Thoughts

I put off doing this properly for longer than I should have. It felt like a project that required a lot of planning and the right moment to sit down and figure it out. In reality it took a weekend, most of which was waiting for the initial backup jobs to complete.

If you’re running a homelab and your backup strategy is “it’s probably fine” — it’s worth spending a weekend on this. Losing a VM you’ve spent hours configuring because you didn’t have a backup is a uniquely frustrating experience. Setting this up once means you don’t have to think about it again.

There’s also something genuinely satisfying about watching a backup job complete and knowing exactly where that data lives, who has access to it, and how fast you could get it back if you needed to. That kind of certainty is hard to put a price on.

Why I Ditched Cloud Storage for a Self-Hosted Setup

Why I Ditched Cloud Storage for a Self-Hosted Setup | BugzCloud.xyz

← Blog  ·  Homelab  ·  Self-Hosting

Why I Ditched Cloud Storage for a Self-Hosted Setup

Cloud storage is convenient. I used it for years without thinking too hard about it. Then I started thinking about it. The more I looked at what I was actually paying, what I was actually getting, and what the alternatives looked like, the less the cloud storage math made sense for my situation. Here’s what pushed me to switch and how the self-hosted version actually works.

The Cost Problem

Cloud storage isn’t expensive per month. That’s the hook. A few dollars a month for a terabyte feels reasonable. But a few dollars a month is $36-60 a year, and if you need multiple terabytes it scales up fast. More importantly, that cost never goes away. You pay it forever, or you lose access to your files.

Compare that to buying drives outright. A 4TB hard drive costs roughly what three to four years of a 1TB cloud subscription costs. After that it’s paid for. It still uses electricity — that’s a real ongoing cost — but it’s significantly less than the subscription, and you own the hardware at the end of it.

For someone running a homelab with a server already drawing power 24/7, adding storage to that server has nearly zero marginal cost beyond the drives themselves. The server is already on. The electricity is already being paid. The storage is effectively free once the hardware is purchased.

// the actual math:
2TB cloud storage: ~$10/month = $120/year = $600 over 5 years
2TB self-hosted on existing hardware: ~$60-80 for drives + electricity = done
Break-even point: under a year. After that it’s just cheaper every single month.

The Privacy Problem

Cost aside, the privacy angle matters more to me. When your files are on someone else’s server, someone else has access to them. That access is limited by policy and terms of service, but those policies can change, accounts can be compromised, and the simple fact remains that your data is physically located somewhere you don’t control.

I’m not storing anything particularly sensitive, but the principle matters. Photos, documents, work files — I’d rather those sit on hardware in my house than on hardware I’m renting from a corporation. When the files are on my server, the only way someone gets them is if they get into my network. That’s a much smaller attack surface than a major cloud provider that’s a constant target.

What the Self-Hosted Setup Actually Looks Like

The software side of self-hosted cloud storage has gotten genuinely good. There are several mature open-source options that provide the same core features you’d expect from a commercial service — file sync across devices, photo management, sharing, mobile apps, web interface. They’re not as polished as the commercial products in every way, but they’re functional and they’re improving constantly.

The setup process is more involved than signing up for a cloud service. You need hardware to run it on, a domain name if you want external access, and some comfort with basic server configuration. If you’re already running a homelab this is a natural fit — it’s just another service running in a container or VM alongside everything else. If you’re starting from scratch for storage specifically, the overhead is higher and you’d want to think about whether it’s worth it.

⚠️ Self-hosted means self-maintained. If your drive fails and you don’t have backups, your files are gone. Cloud services handle redundancy for you automatically. Self-hosted means you’re responsible for backups, drive health monitoring, and recovery. Don’t skip this part.

The Backup Question

This is where self-hosted storage requires more thought than cloud storage. A good cloud provider stores your data redundantly across multiple locations. If their hardware fails, they recover from backups transparently and you never know it happened.

With self-hosted storage, you are the redundancy. The minimum viable backup strategy is the 3-2-1 rule: three copies of your data, on two different media types, with one copy offsite. For a homelab setup that might mean the primary storage, a local backup drive, and a periodic backup to a cheap cloud storage tier or a drive at a different physical location.

It sounds like more work because it is more work. The tradeoff is control, cost, and privacy. Whether that tradeoff makes sense depends entirely on how much you care about those things and how much technical overhead you’re willing to manage.

Is It Worth It?

For me, yes — but I was already running the hardware. The marginal cost of adding self-hosted storage to an existing homelab server is basically just the drives. The privacy improvement is real. The cost saving over time is significant. The convenience is slightly worse than a polished commercial product but not meaningfully so once it’s set up.

If you don’t have existing homelab infrastructure and you’re considering starting one specifically for storage, run the numbers for your situation. The break-even point is real but it takes time to hit, and the setup and maintenance overhead is real too. For a lot of people the simplicity of just paying for cloud storage is worth it. For people who enjoy this kind of tinkering and want more control over where their data lives, self-hosting makes a lot of sense.

Either way, knowing the option exists and understanding roughly how it works is useful. The tools have gotten good enough that it’s not just for people with serious technical backgrounds anymore.

Running AI Locally — What I Learned Doing It on a Homelab

Running AI Locally — What I Learned Doing It on a Homelab | BugzCloud.xyz

← Blog  ·  Homelab  ·  AI

Running AI Locally — What I Learned Doing It on a Homelab

Running AI locally used to mean either spending a fortune on hardware or accepting that you’d be waiting minutes for results. That’s changed a lot. I’ve been running local AI models on my homelab for a while now — image generation, language models, text-to-speech — and the experience has gone from “technically possible but painful” to genuinely useful. Here’s what I’ve learned and what actually matters when you’re setting this up yourself.

Why Run AI Locally at All

The obvious answer is privacy — running AI locally means nothing you generate goes to external servers. But honestly, that wasn’t my main motivation. I got into it because I wanted to experiment without worrying about content policies, rate limits, or paying per generation. Once you have the hardware, it’s essentially free to run as many generations as you want.

The other reason is customization. Cloud AI services give you what they give you. Running locally means you can load specific models, use fine-tuned versions trained on particular styles, and configure things exactly how you want them. For image generation especially, the difference between a generic cloud result and a carefully configured local setup is significant.

// the honest caveat:
Local AI is genuinely useful but it’s not magic. You still need decent hardware, some patience for setup, and realistic expectations about what consumer-grade hardware can do versus data center compute. The results are impressive for what they cost — not impressive compared to unlimited cloud resources.

What Hardware You Actually Need

VRAM is the bottleneck for almost everything AI-related. More VRAM means you can run larger models, generate at higher resolutions, and keep more things loaded simultaneously. Here’s a rough breakdown of what you can do at different VRAM levels:

4GB VRAMBasic image generation, small language models only
6GB VRAMStandard image generation, moderate quality
8GB VRAMGood image generation, small-medium language models
12GB VRAMComfortable for most tasks, medium language models
16GB+ VRAMLarge models, high resolution, multiple simultaneous tasks

My home server currently runs a 6GB card which handles image generation fine but shows its limitations with larger language models — that’s the next upgrade on my list. Beyond VRAM, you want fast storage because model files are large and load times matter, and enough system RAM to handle models that spill over from VRAM. 32GB of system RAM is comfortable, 16GB works but you’ll feel the edges.

Image Generation — What the Setup Looks Like

The image generation ecosystem has matured a lot. There are several well-developed frontends that handle model management, prompt building, and generation queue. Most of them install relatively cleanly if you’re comfortable with the command line and have Python set up.

The learning curve isn’t really the software — it’s understanding how to prompt effectively and how to pick and combine models. The base models are a starting point. The community-trained fine-tunes and other add-ons on top of them are where it gets interesting. Finding ones that work well for your use case takes experimentation.

⚠️ Storage warning: Model files add up fast. A single checkpoint file can be 2-7GB. If you start collecting models and add-ons you’ll fill up storage faster than you expect. Plan for this before you start downloading everything.

Local Language Models

Running large language models locally is more hardware-demanding than image generation. The models that run well on consumer hardware are the quantized versions — compressed versions of larger models that trade some quality for dramatically lower VRAM requirements. A well-quantized 7-8 billion parameter model runs fine on 8GB VRAM and produces genuinely useful results for most tasks.

The tools for serving local language models have gotten much better. Several projects now expose an API-compatible interface which means you can point applications that support configurable AI backends at your local model instead of a cloud service. I use this to run local chat and tools on my own hardware — it works well for anything that doesn’t require the absolute latest model capabilities.

Text-to-Speech

This one surprised me with how good it’s gotten. Local TTS models can now produce natural-sounding speech that’s hard to distinguish from cloud services in many cases. The latency is low enough for real-time use on decent hardware. I run a TTS service on my homelab that integrates with my other local AI tools — it’s a small thing but it makes the whole setup feel more complete.

The Honest Tradeoffs

Running AI locally isn’t strictly better than cloud services — it’s different. Cloud services have newer models, more compute, and zero setup friction. Local setups have privacy, no per-use costs, and full control over configuration. Which matters more depends entirely on what you’re doing.

For experimentation, creative work, and anything privacy-sensitive, local is genuinely the better choice once you have the hardware. For tasks where you need the absolute best model quality and don’t want to think about infrastructure, cloud is still easier.

The hardware investment pays off faster than you’d expect if you use it regularly. The setup time is a one-time cost. And there’s something satisfying about running AI that lives entirely on hardware in your own house, with no external dependencies and no one else involved. If you’re thinking about trying it — start with whatever GPU you already have. The barrier to entry is lower than it used to be.

How I Host This Website for Free (And Why You Can Too)

How I Host This Website for Free (And Why You Can Too) | BugzCloud.xyz

← Blog  ·  Homelab  ·  Self-Hosting

How I Host This Website for Free (And Why You Can Too)

Most people pay for web hosting without thinking too hard about it. $10, $15, maybe $20 a month — it’s not a lot on its own, but it adds up, and you’re essentially renting space on someone else’s computer forever. I got annoyed at that and decided to just use hardware I already owned. The site you’re reading right now costs me $0/month to host.

Here’s how it works and what you’d need to pull it off yourself.

The Basic Idea

The concept is simple: instead of paying a hosting company to run your website on their servers, you run it on your own hardware at home. A computer that’s already on 24/7 — like a NAS, an old desktop, a mini PC, whatever — becomes your web server.

The catch has always been getting traffic to reach your home network without exposing your IP address or messing with your router. That used to require port forwarding and a static IP, which was a pain and a security risk. There’s a better way now.

// the core stack:
A computer running at home → web server software → a secure tunnel to the internet → your domain name pointing at that tunnel.
That’s it. No ports open. No IP exposed.

What You Actually Need

Hardware: Anything that can run Linux or Windows and stay on. An old laptop, a mini PC, a Raspberry Pi, a repurposed desktop. It doesn’t need to be powerful for a personal site — even something modest can handle WordPress traffic comfortably if you’re not running a massive operation.

Web server software: I use WordPress because it’s flexible and well-documented, but you could run anything — a static site, Ghost, a custom Node app, whatever. The hosting method doesn’t care.

A tunnel service: This is the piece that changed everything. Instead of port forwarding, you run a lightweight agent on your home server that creates an outbound-only encrypted tunnel to a tunnel provider. Your traffic comes in through their edge, gets routed through the tunnel to your machine, and your home IP stays invisible. There are a few providers that offer this — some with free tiers that are more than enough for a personal site.

A domain name: You’ll need to buy a domain — that’s the one actual cost here. Domains run $10–15/year for a .com, less for other TLDs. Point it at your tunnel and you’re set.

The Setup Process (Roughly)

I’m keeping this intentionally vague because the specific steps vary a lot depending on your OS, your hardware, and which software you choose. But the general flow looks like this:

1. Get your server software running locally. Install your web server stack on your home machine and confirm it works on your local network. If you can hit it from your phone on WiFi, you’re good.

2. Set up the tunnel. Install the tunnel agent, authenticate with the provider, and create a tunnel that points at your local web server’s port. The provider gives you a generated URL that works immediately.

3. Point your domain at the tunnel. In your domain registrar’s DNS settings, add a CNAME record pointing your domain at the generated tunnel URL. This usually propagates within minutes.

4. SSL is handled for you. Most tunnel providers handle HTTPS automatically — you get a valid SSL certificate without touching certbot or dealing with renewals. This was a massive quality-of-life improvement over older self-hosting setups.

// real talk on uptime:
Your site goes down if your home internet goes down or your computer restarts unexpectedly. For a personal project that’s fine. For something business-critical, you’d want redundancy. Know your use case.

What It Actually Costs

Running costs for my setup: the domain (~$12/year) and the electricity to keep the server on. The server hardware I already owned. The software stack is all free and open source. The tunnel has a generous free tier I haven’t come close to exceeding.

Compare that to $15–20/month for a managed WordPress host and you’re looking at saving $150–200 a year while learning a ton about how the web actually works under the hood.

Is It Worth It?

Depends on what you want out of it. If you just want a site online with minimal effort, pay for hosting — it’s genuinely easier. But if you like tinkering, already have hardware sitting around, care about privacy, or just want to understand how this stuff works, self-hosting is genuinely satisfying. You own the whole stack. Nothing is a black box.

I’ve learned more about networking, Linux, web servers, and DNS from running this setup than I did from years of using managed hosting. That alone was worth it for me.

⚠️ Security note: Self-hosting means you’re responsible for keeping your software updated and your server locked down. Keep your OS and web server patched. Use strong passwords. Don’t expose services you don’t need to. The tunnel approach helps a lot by not requiring open ports, but it’s not a substitute for good security hygiene.

If you’re curious about going deeper on any part of this — the hardware choices, the software stack, the DNS setup — drop me a message on X @Ok_Bugz. Happy to point you in the right direction.