I Built My Own VPN — Here's How You Can Build Your Own
Why I stopped trusting public wifi, and how I built a VPN that routes my traffic through a server I own.
💡 The Idea
These days my whole life fits in a backpack. I’m done with graduation now, and honestly I’ve got no time for anything except applying to jobs, which is a lot of stress — and building things is the only thing that keeps me sane. All week it’s just me, my bag, and my laptop, roaming around the parks coding something.
And I have to say, AI has been a blessing. Even though I’ve been coding since before the ChatGPT era, it’s drastically cut the effort from idea to execution — and for someone who gets bombarded with a hundred ideas a day, I’ve used it mostly to solve my own problems, which is the best kind.
Though it has its downside. Because AI makes things so easy to execute, it never really tells you no. You could ask it to build a time machine and it’ll happily say “sure, let’s do it” — take you halfway down the road with everything looking great, then somewhere deep in the process quietly dump you, tell you it doesn’t actually work, and leave you standing there with a half-built thing you now have to figure out yourself. And trust me, it’s happened to me — I’ve wasted whole weeks building something that in the end just… didn’t work.
(A lot of you have asked what’s going on with ClassRec since I’ve gone quiet — happy to say we’ve gotten a great response from users despite zero marketing. But my bad habit is I get distracted a lot.)
📶 The Problem: Public WiFi
And the problem for me was always the wifi. There’s free public wifi everywhere — the parks, Starbucks — but I was always reluctant to actually use it, because, you know… hacking 😅.
I only know this because of a cybersecurity lecture back in university two years ago. There’s really just one phrase I remember from my professor: “MITM attacks — don’t use public wifi. And if you have to, don’t do anything private like transactions, and only open pages over HTTPS.” That line has stuck with me ever since.
So the obvious answer was to just use a VPN app. But there’s no way I’m paying a VPN company. And free VPNs? Nothing free is actually free — if something is free, you’re the product. I’d read that most free VPNs quietly use your phone as a relay to sell residential IPs. Hard no.
🛠️ Building ColdVPN
So I figured I’d just build my own — a simple VPN app that does nothing fancy, just routes my Mac’s traffic to a server I own instead of straight to the destination. That way the MITM guy and the carrier have no idea where I’m going, let alone what I’m doing once I get there.
And that’s how ColdVPN came to be. The main architecture is a double-layered packet path built on a WireGuard interface — a virtual interface on the Mac grabs all the traffic at the packet level, wraps it, and sends it through an encrypted tunnel to my own exit server. The outside world only ever sees my server, not my laptop or whatever café I’m sitting in.
If you want to build your own, the whole thing is open — you can read the code here: https://github.com/codereyinish/ColdVPN
🕳️ The Rabbit Hole: ColdSpot
But once you build one of these, you start pulling the thread. ColdVPN routes to a server I own — fine, but I still had to rent that server. So the next question that wouldn’t leave me alone was: what if I didn’t rent anything at all? What if my own phone could be the relay, and the exit lived on a free cloud VM I stood up myself?
That’s the rabbit hole that became ColdSpot — the same “route everything through infrastructure I control” idea, pushed further: my Mac hands its traffic to my paired iPhone, the phone relays it out to a self-hosted exit on a free Oracle Always-Free VM, and the outside world just sees that box.
It got deep fast — Layer-3 packet capture, a userspace TCP/IP stack, a reverse tunnel so the phone stays reachable even without a public IP, certificate pinning, self-healing services. Basically a crash course in every networking layer I’d only ever read about.
Here’s the thing though: because it routes the Mac’s traffic out through the phone, ColdSpot can be used to bypass hotspot restrictions — and I don’t want people using it for that, so I’m keeping it private. I’d rather share it one-on-one with developers who want to understand how it works than ship it as a tool people just run.
So if you’re a developer and you want to read the code and talk through the internals, request access here: https://github.com/codereyinish/coldspot-access — but this one’s for learning, not for using. It taught me more about networking than anything Idid in four years of school.