
I’ve been working on building a VPN application for iOS and Android which became easily achievable with the help of (shout out to) Gemini. I set up the entire infrastructure with AWS, switched over to Firebase for a moment, and then switched back to AWS due to familiarity with services like Lambda functions, API Gateway, VPC, and EC2.
At first, I completed the application without using OpenVPN or WireGuard, assuming I could just use an Internet Gateway in worldwide regions. I was wrong. Then I discovered WireGuard was free which, for a bootstrapped company, seemed too good to pass up. So now I’ve got the application designed to be cost-effective, except that using one AWS EC2 t3.small instance can only support about 4 users at once at a rate of 25 Mbps.
Solution 1: Buy servers. This sounds like a great idea if I had deep pockets, which I don’t. At least not yet. Solution 2: Kubernetes. I could host a Kubernetes cluster on a Raspberry Pi 5, which should give me 900 Mbps if WireGuard is used. This would bring me up to roughly 36 users per region for 4K streaming. If users are limited to browsing, we’re looking at 400 concurrent users. If they’re using the VPN for video calls, 200 users at once. Still profitable at $100/yr per user.
Setbacks: File downloads would make it nearly impossible to host more than one user, which means Reef Squid VPN is a no-go unless I write a function blocking downloads for all users. Another setback is Reef Squid doesn’t have offices located across the world. The good news is I could use a VPN sidecar to access a physical server in Japan. Let’s goooo!
Conclusion: After nearly scrapping the VPN project for Reef Squid, I’ve now found rejuvenated hope in starting back up again. I’ll have to start from the bottom up and maybe buy a few affordable servers to run WireGuard on. If I architect it correctly, I should be able to increase the number of concurrent users from 200 to 1,600. So, a $300 investment in a server and card would bring in about $160,000 annually minus electric and maintenance. Sounds good to me.