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, this setup grew into a self-hosted infrastructure that runs a portfolio site, hosts family websites, and even supports gaming servers, all from a humble Dell OptiPlex 7070 Micro. Here's the complete story of going from zero to full self-hosting, including the roadblocks along the way and how they got solved.
The Beginning: Why Self-Hosting Over Cloud
Like many developers, the starting point was 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, a few specific requirements made self-hosting appealing:
- Hosting a personal portfolio website
- Needing a Minecraft server for gaming with family
- Wanting complete control over the infrastructure
- Curiosity about the technical challenges involved
The Dell OptiPlex 7070 Micro became the 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 the basic setup ready, this wall came up immediately. A domain had already been bought through Cloudflare and everything configured locally, but there was no way for the outside world to reach the server.
The Hybrid Solution: VPS + Tailscale
The solution involved a combination not documented much elsewhere:
Step 1: The VPS Proxy Setup. A $5/month DigitalOcean VPS, not to host services, but as a proxy gateway. This gave a public IP address that could receive traffic from the internet.
Step 2: Tailscale Network Bridge. Tailscale got installed on both the VPS and the 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 the VPS, it could receive incoming traffic and proxy it through the Tailscale network to the 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:
- Unlimited websites could be hosted without VPS storage constraints
- SSL certificates were handled automatically
- Full control over home server resources
- The VPS cost remained constant regardless of how many services were running
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. The gaming setup became:
- Minecraft server running on the home server
- playit.gg tunnel for external access
- Family members connecting through the Tailscale network for optimal performance
This hybrid approach gave the best of both worlds: reliable web hosting and smooth gaming experiences.
Scaling Up: Multiple Sites and Services
With the infrastructure in place, expansion followed. Currently running:
- A personal portfolio
- A family member's website (clofelmaecampugan.com)
- A family blog website (doc-agnes.com)
- A Minecraft server for family gaming sessions
Each site runs in its own container or virtual environment, isolated and manageable through the Nginx Proxy Manager dashboard.
Evolution: Ditching the VPS for Pure Self-Hosting
After several months, the VPS started feeling like an expensive middleman for something that could potentially run locally. The breakthrough came with a request for a public IP address from PLDT (the local 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. Traditional Dynamic DNS services worked but felt clunky and had occasional delays when IP changes occurred.
Current Solution: MikroTik + Custom Automation. A MikroTik router made a more robust system possible:
- MikroTik DDNS: handles the primary IP change detection
- Custom IP monitoring script: runs on the 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. A second machine running Unraid was built, 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 there's 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. Salary happened to 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 Could Be Done 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 the digital infrastructure
- Learning opportunities with every new service
Current Architecture Overview
The setup now looks like this:
Internet
|
v
Cloudflare (DNS/CDN)
|
v
MikroTik Router
|
v
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?
For this setup, absolutely yes, but with caveats.
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?
The homelab journey continues with plans for:
- A 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 more about networking, systems administration, and problem-solving than any tutorial or course could. Yes, it increased the electricity bill, and yes, there are occasional odd-hour messages because "the website is down." But the knowledge gained and the complete control over the 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.