Back to all articles
September 29, 20257 min read295 views

From CGNAT to Self-Hosting: My Complete Homelab Journey with Dell OptiPlex and Real-World Solutions

Follow my complete journey from cloud hosting to a full self-hosted homelab setup using a Dell OptiPlex 3060 Micro. Learn how I overcame CGNAT limitations, built a hybrid VPS-Tailscale solution, and eventually achieved pure self-hosting with MikroTik DDNS. Includes real costs, technical challenges, and solutions for hosting multiple websites, gaming servers, and replacing Google services—all from a bedroom server setup.

From CGNAT to Self-Hosting: My Complete Homelab Journey with Dell OptiPlex and Real-World Solutions

From CGNAT to Self-Hosting: My Complete Homelab Journey with Dell OptiPlex and Real-World Solutions

Starting your first homelab can feel overwhelming, especially when you're dealing with networking challenges that most tutorials conveniently skip over. After months of trial, error, and creative problem-solving, I've built a self-hosted infrastructure that runs my portfolio, hosts family websites, and even supports gaming servers all from a humble Dell OptiPlex 7070 Micro. Here's the complete story of how I went from zero to full self-hosting, including all the roadblocks I hit and how I solved them.

The Beginning: Why I Chose Self-Hosting Over Cloud

Like many developers, I started with the obvious choice: cloud hosting. But when you're running multiple projects and want to experiment freely, those $5-20 monthly bills add up fast. More importantly, I had specific requirements that made self-hosting appealing:

  • I wanted to host my portfolio website

  • I needed a Minecraft server for gaming with my girlfriend and little sibling

  • I wanted complete control over my infrastructure

  • I was curious about the technical challenges involved

The Dell OptiPlex 7070 Micro became my starting point. It's compact, energy-efficient, and powerful enough for multiple services perfect for a bedroom server setup.

Challenge #1: Breaking Through CGNAT Hell

Here's where most homelab tutorials fall short: they assume you have a public IP address. In reality, most residential internet connections are behind Carrier-Grade NAT (CGNAT), which makes hosting services from home nearly impossible without workarounds.

After installing Ubuntu Server and getting my basic setup ready, I hit this wall immediately. I had bought a domain through Cloudflare, configured everything locally, but there was no way for the outside world to reach my server.

The Hybrid Solution: VPS + Tailscale

My solution involved a combination that I haven't seen documented much elsewhere:

Step 1: The VPS Proxy Setup I subscribed to a $5/month DigitalOcean VPS not to host my services, but as a proxy gateway. This gave me a public IP address that could receive traffic from the internet.

Step 2: Tailscale Network Bridge I installed Tailscale on both my VPS and my home server. Tailscale's advertise-routes function allows devices in the network to access specific routes, but there was still a problem: how do you route HTTP traffic from the VPS to specific ports on your home server?

Step 3: Nginx Proxy Manager Magic This is where Nginx Proxy Manager became the game-changer. Running on my VPS, it could receive incoming traffic and proxy it through the Tailscale network to my home server's specific ports. The setup looked like this:

Internet → Cloudflare → VPS (Nginx Proxy Manager) → Tailscale Network → Home Server

This architecture solved multiple problems:

  • I could host unlimited websites without VPS storage constraints

  • SSL certificates were handled automatically

  • I had full control over my home server resources

  • The VPS cost remained constant regardless of how many services I ran

Challenge #2: Gaming Servers and UDP Traffic

The Nginx proxy solution worked perfectly for web traffic, but Minecraft servers use UDP, which doesn't play well with HTTP proxies. Tailscale domains also can't handle UDP when proxied through their infrastructure.

Enter playit.gg a tunneling service specifically designed for game servers. It creates tunnels that handle UDP traffic perfectly, and the setup was straightforward. My gaming setup became:

  • Minecraft server running on home server

  • playit.gg tunnel for external access

  • Family members connecting through the Tailscale network for optimal performance

This hybrid approach gave me the best of both worlds: reliable web hosting and smooth gaming experiences.

Scaling Up: Multiple Sites and Services

With the infrastructure in place, I started expanding. Currently running:

Each site runs in its own container or virtual environment, isolated and manageable through my Nginx Proxy Manager dashboard.

Evolution: Ditching the VPS for Pure Self-Hosting

After several months, I realized the VPS was becoming an expensive middleman for something I could potentially do locally. The breakthrough came when I requested a public IP address from PLDT (my ISP).

The Dynamic IP Challenge

Getting a public IP was just the first step. Residential connections typically come with dynamic IPs that change periodically, breaking your services whenever it happens.

Initial Solution: DDNS I started with traditional Dynamic DNS services, which worked but felt clunky and had occasional delays when IP changes occurred.

Current Solution: MikroTik + Custom Automation I invested in a MikroTik router and built a more robust system:

  1. MikroTik DDNS: Handles the primary IP change detection

  2. Custom IP monitoring script: Runs on my server to detect changes

  3. Automated subdomain updates: When IP changes are detected, the script automatically updates Cloudflare DNS records

  4. Tailscale integration: Updates Tailscale configurations to maintain network connectivity

This setup has been rock-solid for months now, with zero downtime during IP changes.

Expanding the Homelab: Unraid and Complete De-Googling

Success with the first server led to expansion. I built a second machine running Unraid, specifically for:

  • File storage and backup

  • Immich (self-hosted Google Photos replacement)

  • Media streaming

  • Additional service hosting

The De-Googling Journey

Moving from Google Photos to Immich was surprisingly smooth. Immich offers:

  • Automatic photo uploads from mobile devices

  • Facial recognition and AI-powered organization

  • Shared albums for family

  • Full control over your data

The transition took a weekend, and now I have unlimited storage for photos and videos without monthly subscription fees.

Real-World Costs and Trade-offs

Let's talk numbers, because this is important:

Monthly Costs:

  • Electricity increase: ~₱500 (roughly $9)

  • Domain registration: ~₱800/year ($14/year)

  • No more VPS costs: -$60/year saved

Initial Investment:

  • Dell OptiPlex 7070 Micro: ~₱15,000

  • MikroTik router: ~₱3,000

  • Unraid server components: ~₱25,000

The electricity cost increase is real and ongoing. My salary did increase by ₱500 the same month, which was either perfect timing or cosmic irony you decide.

Lessons Learned and Technical Insights

What Worked Well:

  • Tailscale's reliability for internal networking

  • Nginx Proxy Manager's simplicity for reverse proxying

  • MikroTik's robust DDNS capabilities

  • Container-based service isolation

What I'd Do Differently:

  • Start with a more powerful router from day one

  • Plan for power consumption earlier

  • Set up monitoring and alerting from the beginning

  • Document configurations more thoroughly

Unexpected Benefits:

  • Deep understanding of networking concepts

  • Confidence in troubleshooting complex systems

  • Complete control over my digital infrastructure

  • Learning opportunities with every new service

Current Architecture Overview

My setup now looks like this:

Internet → Cloudflare (DNS/CDN) → MikroTik Router → Home Network
                                                    ├── OptiPlex (Web services)
                                                    ├── Unraid Server (Storage/Media)
                                                    └── Tailscale Network (Internal access)

Services running:

  • Web hosting: Multiple WordPress and static sites

  • File storage: Immich, Nextcloud

  • Gaming: Minecraft server

  • Monitoring: Uptime monitoring, system metrics

  • Development: Git repositories, CI/CD pipelines

Is Self-Hosting Worth It in 2024?

For me, absolutely yes, but with caveats:

You should consider self-hosting if:

  • You enjoy learning and troubleshooting

  • You want complete control over your data

  • You run multiple services or websites

  • You have reliable internet and power

  • You don't mind being your own sysadmin

Stick with cloud hosting if:

  • You want zero maintenance overhead

  • You need enterprise-level uptime guarantees

  • You're running business-critical services

  • You travel frequently and need remote management

What's Next?

My homelab journey continues with plans for:

  • Kubernetes cluster for container orchestration

  • Automated backups to cloud storage

  • Home automation integration

  • More efficient hardware upgrades

The learning never stops, and each challenge brings new insights into systems administration, networking, and infrastructure management.

Final Thoughts

Building a homelab taught me more about networking, systems administration, and problem-solving than any tutorial or course could. Yes, it increased my electricity bill, and yes, I occasionally get called at odd hours because "the website is down." But the knowledge gained and the complete control over my digital infrastructure make it worthwhile.

If you're considering a similar journey, start small, document everything, and don't be afraid to experiment. The most valuable learning happens when things break and you have to figure out how to fix them.

Running your own infrastructure isn't just about saving money it's about understanding the systems that power our digital world and having the skills to build, break, and rebuild them yourself.

Author

Written by

Humfurie

Software Developer

Enjoyed this article?

Check out more articles on software development, design, and technology.