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:
- Purpose: Is this service mission-critical or experimental?
- Accessibility: Who needs to access it and from where?
- Resources: What are the compute, bandwidth, and storage requirements?
- Privacy: How sensitive is the data being processed or stored?
- Maintenance: How much time can you invest in maintenance?
- 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.
Category | SH | VPS | Service | Notes |
---|---|---|---|---|
Control | 5 | 3 | N/A | Self-hosting gives you complete control over hardware, software, and configurations. VPS offers control of the OS and software but usually not the underlying hardware. |
Privacy | 5 | 3 | N/A | With self-hosting, your data physically remains on your hardware. VPS requires trusting a third party with physical access to your data. |
Initial Cost | 2 | 5 | N/A | Self-hosting requires some, even if minimal, upfront hardware investment. VPS likely has cheaper startup costs. |
Long-term Cost | 5 | 2 | N/A | Self-hosting has lower long-term costs once hardware is purchased. VPS costs accumulate monthly with potential price increases. |
Resource Flexibility | 3 | 3 | N/A | Self-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. |
Uptime | 3 | 4 | N/A | Self-hosting depends on residential power and internet. VPS benefits from enterprise infrastructure, potentially with redundancies. |
Bandwidth | 2 | 4 | N/A | Most home connections have limited upload speeds. VPS typically offers symmetrical high-speed connectivity. |
External Access | 3 | 5 | N/A | Self-hosting requires port forwarding or tunneling for access. VPS generally comes with 1 public IPv4 by default. |
Geographic Distribution | 1 | 4 | N/A | Self-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 Burden | 2 | 4 | N/A | Self-hosting requires hardware maintenance and troubleshooting. VPS eliminates hardware concerns. |
To use this table as a template for your decision-making:
- Consider which factors matter most to your specific service
- Assign a weight (0-5) to each factor based on its importance to you
- Multiply each score by your weight
- Calculate the weighted total for each option
- 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
Category | SH | VPS | Service | Notes |
---|---|---|---|---|
Control | 5 × 2 = 10 | 3 × 2 = 6 | 2 | Control is less critical for a static website |
Privacy | 5 × 1 = 5 | 3 × 1 = 3 | 1 | Website content is public anyway |
Initial Cost | 2 × 5 = 10 | 5 × 5 = 25 | 5 | This is just a one-pager, so lower cost to start is important |
Long-term Cost | 5 × 4 = 20 | 2 × 4 = 8 | 4 | Low overall cost would be ideal, as it’s not directly monetised |
Resource Flexibility | 3 × 1 = 3 | 3 × 1 = 3 | 1 | Static website resource needs are predictable, and quite low |
Uptime | 3 × 5 = 15 | 4 × 5 = 20 | 5 | Higher uptime important for professional presence |
Bandwidth | 2 × 5 = 10 | 4 × 5 = 20 | 5 | Needs to handle traffic spikes and global visitors |
External Access | 3 × 5 = 15 | 5 × 5 = 25 | 5 | Public access is the main purpose |
Geographic Distribution | 1 × 5 = 5 | 4 × 5 = 20 | 5 | The intended audience is global |
Maintenance Burden | 2 × 4 = 8 | 4 × 4 = 16 | 4 | Less maintenance overhead means more time for content |
OVERALL | 101 | 146 | VPS Wins by a significant margin for website hosting |
NextCloud File Sync
Category | SH | VPS | Service | Notes |
---|---|---|---|---|
Control | 5 × 5 = 25 | 3 × 5 = 15 | 5 | The point of NextCloud is to have control over your own data |
Privacy | 5 × 5 = 25 | 3 × 5 = 15 | 5 | Again, the point is privacy |
Initial Cost | 2 × 2 = 4 | 5 × 2 = 10 | 2 | Less bothered about initial costs here |
Long-term Cost | 5 × 5 = 25 | 2 × 5 = 10 | 5 | Long term costs is important though, we don’t want it to snowball too much |
Resource Flexibility | 3 × 3 = 9 | 3 × 3 = 9 | 3 | Middling importance, if this is just personal files it’s not a huge deal |
Uptime | 3 × 2 = 6 | 4 × 2 = 8 | 2 | Downtime is not critical with local sync clients |
Bandwidth | 2 × 2 = 4 | 4 × 2 = 8 | 2 | We don’t need this data in real-time, do bandwidth can be slow and steady |
External Access | 3 × 1 = 3 | 5 × 1 = 5 | 1 | We won’t be using CloudFlare Tunnels here, so external access is not necessary - Tailscale is a better fit |
Geographic Distribution | 1 × 1 = 1 | 4 × 1 = 4 | 1 | 80% of access time will be local, or regional |
Maintenance Burden | 2 × 3 = 6 | 4 × 3 = 12 | 3 | NextCloud is a tool I’d like to learn about more deeply, so a higher maintenance burden is fine |
OVERALL | 108 | 96 | Self-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:
If the service contains highly sensitive data you want physical control over:
- Self-host at home
If the service requires high uptime and consistent performance:
- Use a VPS, or self-host with robust failover
If the service requires high bandwidth, especially upload:
- Use a VPS unless you have exceptional home internet
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!