Building My Private Cloud: A Journey with Proxmox, Cloudflare, and Tailscale
Building My Private Cloud: A Journey with Proxmox, Cloudflare, and Tailscale
🚀 Over the past few months, I built my own private cloud — powered by Proxmox, Cloudflare, Tailscale, and a passion for technology.
From running my own media servers with Jellyfin, setting up a CI/CD pipeline with GitHub Webhooks, to hosting web apps built in Golang and HTMX, it's been an amazing learning journey.
I'm excited to share how I did it, what I learned, and where I'm heading next. 📈
Check out my full story below! 👇
The Goal
My aim was simple but ambitious:
- Host multiple virtual machines (VMs) for different purposes — from Windows and Linux environments to web servers and internal tools.
- Access these environments securely and seamlessly from anywhere.
- Create a platform where I could easily develop, deploy, and maintain my own applications.
- Manage everything under my own domain without relying on a static public IP or exposing unnecessary services to the open internet.
The Tools I Used
- Proxmox VE: A powerful open-source platform for running VMs and containers.
- Cloudflare: For DNS management, dynamic DNS updates, secure tunneling, and access control.
- Tailscale: For creating a private, secure mesh network across all my devices.
- GitHub Webhooks + Custom Webhook Server: For lightweight CI/CD automation.
- Personal Domain: Purchased via Namecheap and managed through Cloudflare.
- Parsec: Low latency remote desktop access. Great for gaming over the local network
On the development side:
- Golang: For building fast, scalable backend services.
- HTMX: For creating dynamic web applications without the complexity of heavy JavaScript frameworks.
- A-H/Templ: For clean, efficient HTML templating in Go.
- JIN: For additional web development flexibility.
What I Achieved
1. Full Virtualization Setup with Proxmox
I installed Proxmox on my hardware (Ryzen 5 3600 CPU + RTX 2060) and configured it to run:
- Windows 11 VMs with GPU passthrough (for gaming and remote access)
- Ubuntu servers hosting websites, apps, and internal tools
- Internal networking using Proxmox's DNS and DHCP services
This setup gives me the flexibility to spin up new environments within minutes.
2. Secure Private Access with Tailscale
Using Tailscale, I established a private, encrypted mesh network across all my devices, connecting my laptops, servers, and even my phone without complicated VPN setups.
Through Tailscale, I can:
- SSH directly into servers without opening firewall ports.
- Access Windows VMs securely using NoMachine, which I prefer over RDP for its superior performance, better media streaming, and easier file transfers.
3. Private Remote Access via Cloudflare
For certain web services like Jellyfin and my internal Speedtest server, I integrated Cloudflare Zero Trust:
- Tunneling secured traffic without exposing ports.
- Requiring One-Time PIN authentication for access.
- Using dynamic DNS updates so my services stay reachable even if my IP changes.
The result: full remote access to key services without compromising security.
4. Domain Management and Service Routing
By connecting my domain to Cloudflare, I was able to create clean and secure routing:
- jellyfin.mydomain.com for media streaming
- speedtest.mydomain.com for testing internal and external speeds
- Internal project apps hosted securely behind access policies
Everything is encrypted, authenticated, and isolated — no accidental public exposure.
5. CI/CD Pipeline with GitHub Webhooks
One of my favorite parts of this journey has been setting up my own continuous integration and deployment (CI/CD) pipeline:
I built and hosted a Webhook server inside my infrastructure. Whenever I push updates to my GitHub production or staging branches, the server:
I'm currently using this setup to deploy my personal project — a show tracking tool that logs and tracks my progress watching anime, Asian dramas, and Western shows.
Challenges I Faced
- GPU Passthrough Configuration: Passing my RTX 2060 cleanly into Windows VMs with VFIO and OVMF BIOS setup was tricky but ultimately rewarding.
- Remote Login Optimization: Ensuring VMs and services auto-started properly so I could reconnect without manual intervention.
- Webhook Stability: Designing a lightweight yet reliable webhook listener capable of handling multiple projects cleanly.
- Latency Tuning: Balancing NoMachine, Tailscale, and Proxmox networking configurations for optimal remote desktop experiences.
Looking Ahead
Although I'm proud of what I've built so far, the future holds even bigger dreams.
I hope to invest in better hardware — more powerful CPUs, enterprise-grade GPUs, and massive storage arrays — so I can expand my infrastructure.
Today, my RTX 2060 GPU can only be passed through to one VM at a time. With enterprise GPUs supporting vGPU (virtual GPU splitting), I could allocate resources across multiple VMs simultaneously — unlocking true multi-environment capabilities.
Storage is another major need. I run a Jellyfin server to stream the Blu-rays I buy, but with limited storage, I often have to delete movies after watching to make space for new ones. In the future, I dream of having a storage array with multiple 20TB drives to archive everything properly.
Internet reliability is also crucial. Currently, I rely on a wireless connection from JD Internet, which can be inconsistent. Having a fiber connection would vastly improve the reliability of my remote services, backups, and hosting experience.
From a development perspective, I'm looking forward to exploring lower-level programming:
- Learning C, Rust, and Zig for building faster, more efficient tools.
- Experimenting with system-level software and embedded solutions.
Finally, I want to add a Pi-KVM or similar solution to allow BIOS-level remote control over my hardware, making maintenance and upgrades even easier.
Final Thoughts
Technology is truly amazing.
Every day, I get to learn something new, challenge myself, and create solutions that would have been unthinkable just a few years ago.
Self-hosting has taught me so much about systems, networking, security, and automation — and this is only the beginning.
I'm excited to keep building, exploring, and sharing everything I learn along the way.
If you're working on something similar, dreaming about self-hosting your own applications, or just passionate about technology — I'd love to connect and hear your story too!