In my homelab journey post, I mentioned how my self-hosted adventure began with solving a simple problem. Since then, I’ve zigzagged between hosting services at home and using VPS providers. This has given me a nuanced perspective on the eternal homelab question: should you self-host at home or rent a VPS?

Learning Objectives Uber Alles

Before we dive into comparison metrics, there’s an important personal bias I have: if your primary goal is to learn a specific technology, that objective trumps all other considerations.

Want to truly master Kubernetes with full control plane access? Self-hosting wins by default. Interested in understanding the intricacies of hardware RAID or network topology? Again, self-hosting is your only real option.

I personally believe that learning is the most valuable benefit of having a homelab, and some things are either too abstracted or too costly to learn from a VPS. This is, of course, my opinion, and I’m a touch biased. But hopefully this will steer you in the right direction to save having to re-do things in your homelab once you get so far down the rabbit hole and realise that the VPS is missing a key feature you need for learning.

Categories for Consideration

I’m sure there’s more nuanced approaches, but I’ve tried to break down my process into the major categories that I consider.

This is, non-exhaustively:

  1. Purpose: Is this service mission-critical or experimental?
  2. Accessibility: Who needs to access it and from where?
  3. Resources: What are the compute, bandwidth, and storage requirements?
  4. Privacy: How sensitive is the data being processed or stored?
  5. Maintenance: How much time can you invest in maintenance?
  6. Cost: What’s your budget for this service?

The Main Decision Framework

Breaking these major categories down slightly further, I’ve tried to give an example of the weightings that I give to each of the below factors. Sometimes there’s additional ones to consider, sometimes a few of these don’t matter at all.

I’ve given some example weightings for each factor from 1 (poor) to 5 (excellent) based on my experience. For your specific use case, you’ll need to weight these factors according to their importance to you. Most of these notes are generalities, if something doesn’t specifically apply to your situation, adjust your weightings accordingly.

CategorySHVPSServiceNotes
Control53N/ASelf-hosting gives you complete control over hardware, software, and configurations. VPS offers control of the OS and software but usually not the underlying hardware.
Privacy53N/AWith self-hosting, your data physically remains on your hardware. VPS requires trusting a third party with physical access to your data.
Initial Cost25N/ASelf-hosting requires some, even if minimal, upfront hardware investment. VPS likely has cheaper startup costs.
Long-term Cost52N/ASelf-hosting has lower long-term costs once hardware is purchased. VPS costs accumulate monthly with potential price increases.
Resource Flexibility33N/ASelf-hosting allows adding RAM/storage as needed, but with added one-time upfront cost. VPS upgrades often require jumping to the next pricing tier, so the additional cost is ongoing.
Uptime34N/ASelf-hosting depends on residential power and internet. VPS benefits from enterprise infrastructure, potentially with redundancies.
Bandwidth24N/AMost home connections have limited upload speeds. VPS typically offers symmetrical high-speed connectivity.
External Access35N/ASelf-hosting requires port forwarding or tunneling for access. VPS generally comes with 1 public IPv4 by default.
Geographic Distribution14N/ASelf-hosting is limited to a single location, your home. VPS can generally be deployed in a region of your choice, or even multiple regions.
Maintenance Burden24N/ASelf-hosting requires hardware maintenance and troubleshooting. VPS eliminates hardware concerns.

To use this table as a template for your decision-making:

  1. Consider which factors matter most to your specific service
  2. Assign a weight (0-5) to each factor based on its importance to you
  3. Multiply each score by your weight
  4. Calculate the weighted total for each option
  5. The highest score indicates your optimal choice

For example, if privacy and control are top priorities (service score = 5), while geographic distribution doesn’t matter (service score = 0), your self-hosting score would rise significantly compared to VPS.

Important note about Cloudflare Tunnels

Using Cloudflare (CF) Tunnels with self-hosting improves several scores:

  • External Access improves significantly (eliminates need for port forwarding)
  • Geographic Distribution improves (leverages CF’s global CDN)
  • Security benefits (no open ports on your home network), but CF terminates your TLS so they are able to see your traffic
  • Bandwidth concerns are partially mitigated for static content (if served from CF cache)
  • Uptime perception can improve (cached content remains available even if your server is down)

These improvements make self-hosting much more competitive with VPS options for many use cases, especially when combined with the inherent privacy and control benefits of keeping your data at home.

The Accessibility part of the original categories will be a guide for if you’re even going to use Cloudflare Tunnels, so consider that initially as it will have a snowball effect on the rest of the framework.

Real-World Decision Examples

Let’s apply our comparison framework to some common self-hosting scenarios:

Personal Website

CategorySHVPSServiceNotes
Control5 × 2 = 103 × 2 = 62Control is less critical for a static website
Privacy5 × 1 = 53 × 1 = 31Website content is public anyway
Initial Cost2 × 5 = 105 × 5 = 255This is just a one-pager, so lower cost to start is important
Long-term Cost5 × 4 = 202 × 4 = 84Low overall cost would be ideal, as it’s not directly monetised
Resource Flexibility3 × 1 = 33 × 1 = 31Static website resource needs are predictable, and quite low
Uptime3 × 5 = 154 × 5 = 205Higher uptime important for professional presence
Bandwidth2 × 5 = 104 × 5 = 205Needs to handle traffic spikes and global visitors
External Access3 × 5 = 155 × 5 = 255Public access is the main purpose
Geographic Distribution1 × 5 = 54 × 5 = 205The intended audience is global
Maintenance Burden2 × 4 = 84 × 4 = 164Less maintenance overhead means more time for content
OVERALL101146VPS Wins by a significant margin for website hosting

NextCloud File Sync

CategorySHVPSServiceNotes
Control5 × 5 = 253 × 5 = 155The point of NextCloud is to have control over your own data
Privacy5 × 5 = 253 × 5 = 155Again, the point is privacy
Initial Cost2 × 2 = 45 × 2 = 102Less bothered about initial costs here
Long-term Cost5 × 5 = 252 × 5 = 105Long term costs is important though, we don’t want it to snowball too much
Resource Flexibility3 × 3 = 93 × 3 = 93Middling importance, if this is just personal files it’s not a huge deal
Uptime3 × 2 = 64 × 2 = 82Downtime is not critical with local sync clients
Bandwidth2 × 2 = 44 × 2 = 82We don’t need this data in real-time, do bandwidth can be slow and steady
External Access3 × 1 = 35 × 1 = 51We won’t be using CloudFlare Tunnels here, so external access is not necessary - Tailscale is a better fit
Geographic Distribution1 × 1 = 14 × 1 = 4180% of access time will be local, or regional
Maintenance Burden2 × 3 = 64 × 3 = 123NextCloud is a tool I’d like to learn about more deeply, so a higher maintenance burden is fine
OVERALL10896Self-Hosting Wins for file synchronization

These are just a couple of examples, but hopefully you get the idea. Your weighting and particular importance of each factor will be different, as may some of the categories. But if you stick to a framework, you’ll be able to make more repeatable decisions.

Bonus points if you add a note on each of these to your notes app/repo/pile to help you remember why you made the decision you did. This can also come in handy if certain factors change over time.

Making Your Decision

Here’s a simplified decision tree:

  1. If the service contains highly sensitive data you want physical control over:

    • Self-host at home
  2. If the service requires high uptime and consistent performance:

    • Use a VPS, or self-host with robust failover
  3. If the service requires high bandwidth, especially upload:

    • Use a VPS unless you have exceptional home internet
  4. If you’re running multiple services with moderate requirements:

    • Self-host at home for cost efficiency at scale

Wrap-Up

The choice between VPS and self-hosting is rarely absolute. I’ve found that my most satisfying infrastructure setups involve a thoughtful mix of both approaches – like the examples above. Both of these are real-world examples of services I host, and where I host them.

Have you made any hosting decisions you’ve regretted, or had any corner cases that disguise the benefits of one approach over another?

Let me know on Mastodon or drop me an email – I’m always interested in comparing notes with fellow homelab enthusiasts!