Almost ten years ago I unintentionally have started my own small business. It was a VPN service same as many others on the market.

Back in those days I used to run my personal OpenVPN server on DigitalOcean, and my friends were constantly asking for new accounts. It was pretty annoying to generate configuration files for everyone, so I decided to check if it’s possible to manage OpenVPN users automatically. This way I learned that OpenVPN server is able to run shell commands on specific events, for example when the user authenticates, connects or disconnects. My first thought was, what if OpenVPN runs some script that checks if the credentials are valid? And the first proof of concept work that way for some time.

But when you have a power to run scripts, you can go beyond as far as your imagination takes you, right? That’s how the idea of building OpenVPN billing software came to my mind.

Those days I’ve been working as backend Ruby developer at Evrone.com. It was a great job where I learned a lot, but I already had a fear of missing out. There were so many different technologies and approaches that I didn’t have a chance to use on my work project. So I decided to fill those gaps with my pet project.

Eventually I’ve built an OpenVPN server wrapper and a compatible billing web application for VPN service. I’ve been running that service for a couple of years, though I treated it as a pet project with real users. But what was more important I learned a lot working on it. Whenever I wanted to learn some new technology - I used it in my project. Golang, ZeroMq, Chef, Vagrant, whatever. I had a power to bring any technology to the project and play with it. Such flexibility in technology stack made it very different from my daily job, that brought me real money. I still strongly believe that most of my technical growth those days came from the experience that I got working on SmartVPN.

At the end, when I changed my job I decided to shutdown the project. I was too busy with new responsibilities and had no more time to support it, so eventually I lost any interest to the project. But shutting it down silently seemed too boring, so I decided to opensource the platform, so that anyone can learn how it worked and use it for their good. That’s how Mehonoshin/smartvpn-billing was born.

I also posted a couple of articles for Russian audience where I shared my experience.

I didn’t imagine that they will get so much attention as they did. I got multiple offers to partner and keep it running, but rejected all of them because wanted to focus on the new job. To be honest today when I look at VPN market I feel a bit sad. Many different VPNs emerged in the last ten years but all of the features that they offer were available at my SmartVPN, or at least they were planned in the roadmap.

Funny thing, I still occasionally get emails from people who want to setup SmartVPN on their infra. So later I even did an attempt to wrap everything into docker and make the setup process as smooth as possible.

Summing up this story, here is what I learned from this project:

  • Pet project is one of the best ways to get new skills
  • Don’t be shy and share your experience and code
  • Business skills are important, even if you are just a developer
  • Some ideas become a thing years later