Building My Homelab: From Failed Attempts to a Solid Proxmox Setup

by Cristian Caiazzo
Homelab Proxmox LXC Docker Self-Hosted Infrastructure

After years of failed attempts, I finally built a stable homelab using Proxmox, LXC containers, and proper architectural decisions. Here's my journey from chaos to a manageable self-hosted infrastructure.

Building My Homelab: From Failed Attempts to a Solid Proxmox Setup

I had been trying to set up my own homelab for a long time, wanting both a private environment to host certain applications on my own hardware and a sandbox to practice various concepts I wasn’t familiar with. The problem I always had? The lack of a clear strategy on how to set things up.


🚫 The Failed Attempts: Learning What NOT to Do

First Attempt: Ubuntu Desktop (The Chaos Era)

I remember my first attempt: I used a PC with Ubuntu (not server, desktop edition) and installed applications directly on the operating system.

This was a long time ago, and I didn’t have the knowledge or ability to understand infrastructures like I do now.

The result? Inevitable instability:

The pattern: It lasted just long enough to do the initial configurations, then I’d abandon it.

And I didn’t try this just once. I tried several times, each ending in frustration.

The Breaking Point

After multiple failed attempts and years of abandoning the idea, I spotted a mini PC on my desk — another failed homelab attempt — and had an epiphany.

The realization: With the new knowledge I’d gained from work, I was probably now capable of building a manageable homelab, usable as a sandbox, and pleasant to use.


💡 The Right Foundation: Choosing Proxmox

The first thing was identifying the operating system to start from. This time, I didn’t get fooled.

I immediately went with Proxmox.

Why Proxmox (And My WiFi Disaster)

I had tried Proxmox in the past but had to give up because I don’t have ethernet cables near my desk. So I tried to set everything up via WiFi.

Let’s just say that after a couple of days, I abandoned everything.

Lesson learned: Don’t try to run Proxmox over WiFi. Just don’t.

The Actual Setup (That Worked!)

This time I decided to:

  1. Move the mini PC next to a router
  2. Relocate my entire workspace temporarily
  3. Do the configuration properly

I connected to my Starlink router, launched the installation, and voilà! I don’t even know why I was so stubborn about the WiFi configuration.

In 10 minutes I was operational!

I navigated from the browser to the proposed address, and magic! I accessed the Proxmox interface.


🏗️ Building the Core Infrastructure

At this point, I decided on two main things to centralize network management:

1. Caddy for Reverse Proxy

I created an LXC container running Caddy.

I chose Caddy over Nginx for simplicity of configuration and maintenance. There are certainly better solutions, but I had confidence with Caddy, so it’s my current choice (which might change in the future).

2. Pi-hole for DNS Management

The second LXC container runs Pi-hole.

Beyond its functionality for blocking ads and trackers at the DNS level, it allows me to easily insert entries into local DNS.

The Magic: FQDNs Instead of IP Addresses

Once I set Pi-hole as the primary DNS on my router, my homelab was no longer composed of meaningless IP addresses but clear FQDNs (Fully Qualified Domain Names).

These FQDNs are then translated by Caddy to the correct addresses.

The difference: Instead of accessing http://192.168.1.150:8080, I now access service.homelab.local


🎯 The Game-Changer: LXC Containers Everywhere

At this point, I already had something much more advanced than my previous experiences.

But the architectural choice that completely transformed my homelab compared to past attempts was: using LXC containers everywhere.

Evolution of My Container Strategy

Initially: I chose community installations from Proxmox scripts.

Currently: I’m preferring to use LXC containers with a base Debian installation and then configure Docker Compose.

Why This Approach Works

Thanks to the Proxmox + containerization combination, I finally have a solid foundation to work on:

BenefitDescription
IsolationEach service runs in its own container
SnapshotsEasy backup and rollback capabilities
Resource ControlPrecise CPU and memory allocation
Easy MigrationMove containers between hosts if needed
Fast DeploymentSpin up new services in minutes
Clean RemovalDelete a container without affecting others

LXC vs VMs: The Right Choice for Homelab

I chose LXC containers over full VMs because:


📊 Current Setup Overview

Here’s what my homelab currently runs:

Proxmox Host (Mini PC)
├── LXC: Caddy (Reverse Proxy)
├── LXC: Pi-hole (DNS + Ad Blocking)
├── LXC: Service 1 (Debian + Docker Compose)
├── LXC: Service 2 (Debian + Docker Compose)
└── LXC: Service N (Debian + Docker Compose)

Each service container follows a pattern:

  1. Base: Debian LXC container
  2. Docker: Docker and Docker Compose installed
  3. Service: Application running via docker-compose.yml
  4. Backup: Proxmox snapshots for recovery

🚀 What’s Next: The Evolution Roadmap

The evolution is far from complete. I have many projects in progress and planned:

In Progress

Planned

I didn’t want to make this article too long, so I’ll dive deeper into each of these topics in future posts.


💡 Key Lessons Learned

After years of failures and finally building something that works, here are my main takeaways:

1. Start with a Solid Foundation

Don’t use:

Do use:

2. Embrace Containerization

Whether it’s LXC, Docker, or both — containers solve so many problems:

3. Invest in Network Fundamentals

Setting up proper DNS and reverse proxy from the start changed everything:

Before: http://192.168.1.47:8096
After:  https://outline.home.local

This small change makes the homelab actually pleasant to use.

4. Don’t Overcomplicate Initially

I started simple:

Then I evolved from there. Trying to build everything at once leads to abandonment.


🛠️ Practical Tips for Your Homelab

If you’re starting your own homelab journey, here’s what I wish I had known:

Hardware Requirements

You don’t need much to start:

Initial Setup Checklist

  1. Install Proxmox on bare metal
  2. Configure networking properly from the start
  3. Set up Pi-hole as your first LXC container
  4. Configure DNS in your router to point to Pi-hole
  5. Deploy Caddy (or Nginx Proxy Manager) for reverse proxy
  6. Create template LXC containers for easy cloning
  7. Set up backups immediately

Resource Allocation

For LXC containers, I typically use:

The beauty of LXC: you can adjust these on the fly!


🔒 Considerations

My approach:


📈 The Results: A Working Homelab

After all this work, I finally have what I wanted:

MetricBefore (Ubuntu Desktop)After (Proxmox + LXC)
StabilityDays before issuesMonths without problems
Deployment TimeHours of manual workMinutes with cloning
MaintenanceConstant firefightingScheduled updates
ScalabilityImpossibleEasy to add services
RecoveryReinstall everythingRestore from snapshot
UsabilityIP:port nightmareClean FQDNs

🎬 Conclusion

Building a homelab isn’t about having the latest hardware or the most complex setup.

It’s about:

My homelab journey went from chaos to stability not because I got better hardware, but because I finally understood the importance of proper architecture and containerization.

If you’re struggling with your homelab, take a step back and ask:

Sometimes the answer is to tear it all down and rebuild with a better foundation. That’s what I did, and it finally worked.


📚 Resources


🔮 Coming Soon

In future articles, I’ll dive deeper into:

Stay tuned for more homelab adventures!


Thanks for reading! If you have questions about homelabs, Proxmox, or want to share your own homelab journey, feel free to reach out.

Related Articles

Contattami

Hai domande o vuoi collaborare? Inviami un messaggio!

Accetto la Privacy Policy e autorizzo l'uso dei miei dati per la gestione di questa richiesta.

Back to Blog