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
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:
My personal portfolio
My girlfriend's website (clofelmaecampugan.com)
My mom's blog website (doc-agnes.com)
Minecraft server for family gaming sessions
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:
MikroTik DDNS: Handles the primary IP change detection
Custom IP monitoring script: Runs on my server to detect changes
Automated subdomain updates: When IP changes are detected, the script automatically updates Cloudflare DNS records
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.

Written by
Humfurie
Software Developer