I'm Sergey! I turned 30 years old in 2017, and I'm a computer science graduate from Harvey Mudd College. I've been self-employed since 2010, in which time I've started and worked on a variety of my own projects, both to keep myself entertained and to bring in an income.
The most recent of these is ArkServers.io, a game server hosting company I launched in September 2016. There are certain online games, like Ark: Survival Evolved, where many players will rent servers for themselves and their friends to play together. The server software is available for free from the game's creators, but configuring it requires technical skills, and running it around the clock requires reliable hardware and fast Internet.
ArkServers.io takes care of these needs by hosting the game server software for $14 per month. I built a web-based control panel that my clients use to set up the game server exactly how they like, and then I run it on excellent hardware with fast Internet.
As of late June 2017, I am running 1,400 game servers for my customers, and I'm bringing in about $20,000 per month in revenue. I have been growing at 8% per week for the last few months.
I've always liked "___ hosting" as a business idea. I've often noticed that behind most popular open-source projects there's a multi-million-dollar business whose plan is simply to buy or rent some servers, host that open-source software, and offer a web-based control panel for the customer. Think Git, Apache, Sendmail, MySQL, ElasticSearch, and similar services. It's an easy idea to come up with, an easy product to build, and customers are easy to find, since you can just advertise wherever people gather to discuss open-source projects.
Sometimes the potential profit is huge. Companies whose business model is "download Apache for free, set it up, and run it on commodity hardware" are now known as web hosting companies, and they're a multi-billion-dollar industry.
Game server hosting is much smaller. The total addressable market is maybe $50 million per year, but that niche size presents an opportunity. Since VCs will never fund a company with so little unicorn potential, and many potential founders would never bother starting one, the whole field has very few competitors — and many of them are less than competent.
My skills and experience are perfect for building a hosting company. I've been making web apps since middle school. My only non-self-employed job was the year I spent at Dreamhost right out of college (2009-2010). Because of that, and my own decade-plus of tinkering, I know a great deal about Linux servers and networks. I know how to get racks full of servers at below-market rates, how to manage those servers, and how to create a web app that the customer will use to control their game — a perfect combination!
My plan was always to expand to many different games, but starting with a single game made sense. It would let me test out the business model, iron out all the businessy stuff, and get some practice with promotion before I had to worry about answering support tickets for issues with dozens of games.
I chose to start with Ark: Survival Evolved because of how much growth potential I saw. Prior to launching, I researched the growth trends of a variety of games through SteamSpy and Google Trends, and Ark was the clear winner.
Ark: Survival Evolved
I stopped working a "real job" in 2010, and my professional life since then has consisted of creating and launching companies like this one. The semi-passive income from each successful project would fund my living expenses while I built the next one. I launched the first of these profitable companies while I was still in college, but that's a story for another day.
It took about 2 months, working 4-6 hours per day, to create the initial product for ArkServers.io. Aside from paying my living expenses while I worked on this, I needed very little money to launch it. I spent several hundred dollars renting servers that my first customers would use, but by the time that first credit card bill came due, the revenues had more than covered these initial expenses. I didn't start spending on advertising until much later, when I could pay for it out of profits.
It took me about 2 months from when I started working on the product to when I launched it. I'll cover the product creation in parts.
Part 1: The Job Queue
The first thing I built was a job queue in Go. After doing some research, I found that I was unhappy with all the popular job queues I'd found. Most were married to a single language and framework (usually Rails) and required you to write your application and jobs in that language. I wanted something more flexible, where the jobs themselves would be nothing more than shell commands. This would mean that different parts of my application could be written in different languages, and I could switch languages without having to abandon the job queue.
I chose Go for the job queue because fast concurrency was essential, as was the correctness that comes with using a statically typed, compiled language. I'm still bothered by Go's lack of exceptions and its unique brand of error handling that makes for painfully verbose code. I wouldn't use it for my day-to-day programming — but for this job queue, I have no regrets about using it.
I spent about 2 weeks building the job queue and open sourced it as brooce. I actually tried to promote it on reddit and Hacker News, but my efforts were met with very little interest. I think that's a shame — many other developers could probably benefit from what I've done here, but promoting it was not my primary goal, so I moved on.
About 9 months later, that initial version of brooce is still running with next to no changes from the initial release. It runs hundreds of parallel threads and chews through about 30,000 jobs per day that do everything from configuring servers for customers to monitoring the hardware. I'm really glad I took the time to build it and have no plans to switch away.
Part 2: The Web Application
The web application was written over about a month using LAMP. I realize that advocating for PHP+MySQL won't score me any points here, but I really like them both. PHP is easy to use, runs much faster than most alternatives, and is extremely mature and well-tested. MySQL (in its MariaDB incarnation) also scores points for speed and ease-of-use, and 20+ years of use and abuse have made it largely bug-free. Most importantly, I have tons of experience with these tools and can be immediately productive with them.
I'm quite proficient in HTML/CSS, but designing good-looking pages has never been my strong point. Rather than waste lots of money paying a designer, I just used the Bootstrap library and got something decent-looking and functional up fairly quickly. I've always assumed that the appearance of the site would be revamped with professional help once the money allowed, and I hope to find the time to focus on this in the next few months.
Part 3: Jobs / Background Tasks
As you recall, the job queue I developed simply invokes shell commands without caring what language they're written in. I wrote these jobs as PHP scripts designed to run from the command line. There were maybe 5-10 of them to begin with (and far more now), and they could do things like "set up game server id 5124 on machine 15" or "backup the save files from game server 1934."
The quality of my web application! Nearly all game server hosting companies use the same standard control panel, called TCAdmin2 — basically a cPanel for game servers — and it sucks. Since it was designed to easily generalize to all games, present and future, it doesn't provide a good UI for configuring the options of any one particular game.
Since the hosts didn't create it themselves, it's impossible for them to fix bugs or add the features their customers are demanding. They're stuck getting bug fixes and new features at the same time all of their competitors get them.
For game features TCAdmin2 can't handle, my competitors' websites will often have knowledge base articles telling customers "if you want feature X enabled on your game server, please contact support." This kind of thing annoys customers, slows things down, and cuts into the company's profits by forcing them to hire more support workers.
Also, they can't fully integrate billing, which leads to a constant need for manual fiddling to make sure all customer payments are accounted for, non-paying customers are disabled, etc. This is all stuff that ArkServers.io does automatically.
As I discussed earlier, one of the nice things about being a hosting company for a pre-existing product is that you have a ready-made audience to promote to. The Ark: Survival Evolved community centers around a game wiki curated by the game's creators. That wiki has a page where hosting companies can list themselves, and I added myself to the list. The list is alphabetical, so naming my company ArkServers.io played in my favor here. That listing was enough for me to start picking up my first few customers.
One feature that helped convert visitors into buyers was the 24-hour free trial. None of my competitors have this feature, but for me it was a no-brainer. I let people sign up and immediately get a game server without having to pay anything. If you want to keep your server, just add a credit card before the 24-hour countdown runs out — otherwise it (and any in-game progress you've made) just gets deleted.
Once I had a little bit of profit to re-invest, I experimented with different paid promotion strategies. Google ads for juicy search terms like "ark server hosting" turned out to work extremely well, and Bing ads were pretty good too. The cost per conversion with Bing was half of that with Google, but Bing's low traffic meant that I couldn't buy as many clicks as I wanted.
Reddit ads were a total failure. I found several subreddits dedicated to Ark, including /r/playark. Plenty of people would click the ads, but no one would buy. I never figured out why. I still spend maybe $50 per month on Reddit, just for the mind share and exposure, but Google and Bing have the best ROI and get most of my money.
I also experimented with a referral program, paying existing customers to bring in new people. Nobody cared for a long time, but now that I have 1,000+ customers, a few of them are starting to earn a little money by referring a friend or two.
Through all of this, growth has been pretty steady. It's never been far from the 10% per week growth rate that Paul Graham encourages Y Combinator startups to strive for.
The start of summer brought a boost in growth, too, presumably as kids went on vacation.
Month | Revenue |
April 1, 2017 | 7382 |
May 1, 2017 | 11608 |
June 1, 2017 | 14239 |
July 1, 2017 | 19831 |
My base plan costs $14 per month, and many customers will maintain multiple game servers with me.
Of that revenue, roughly 4.8% goes to Stripe for payment processing. 33% goes to my data center costs. A fixed amount, typically $2-3k per month, is spent on advertising. $1k per month is spent to pay a contractor who helps out with support. The rest is profit.
Speaking of Stripe, I'm still using it as my only payment processing tool. The lack of PayPal support has irritated many European customers, but there are major advantages, too. Stripe is super-friendly to work with, super-easy to integrate, and can handle automatic monthly billing without any additional input from either me or the customer. The customer just puts in their card number when they sign up and Stripe automatically charges that card every month until they are told to stop.
If I added PayPal, I'd have to spend time developing the recurring billing software myself, and would have to automatically email PayPal users and remind them to pay every month. Anyone who doesn't see the email risks being disabled for non-payment.
North American and African customers don't mind the lack of PayPal, but Europeans seem to get outraged about it. It's probably worth adding PayPal in the future just to appease them, but there are many other things I'd rather work on first.
The volume of support requests is currently about 20 messages per day, and this is a persistent thorn in my side. I pay a support contractor $1k per month to help by answering some of the questions, but I still have to spend 30-60 minutes per day dealing with support. This takes time away that I'd rather spend coding, and finding ways to minimize this will be a major goal going forward.
One problem is that most support tickets deal with things that we can't really help with anyway. Here are some examples:
I added a FAQ page a few months ago, and that helped reduce the support volume a little. I'm also planning to add a forum, which will hopefully let customers help each other out and reduce our support burden further.
One surprising thing I've discovered is that the volume of support has hardly increased, even as our number of customers has doubled over the last 2 months. The support volume seems to be correlated more with growth than with the absolute number of customers.
I have more ideas for growth than time to implement them. For now, I'm still only hosting Ark: Survival Evolved servers, but there are many other similar games. Some of my customers have already asked me when I will be able to take over all their game hosting needs, and I hope the answer will be "soon."
These days, 7 Days to Die is growing really fast and Minecraft is perpetually big. I plan to add those first.
I also hope to add more community features that will set me apart from other game hosting companies. Some of my more sophisticated customers will create websites for their game server, and link it up so the site will report who's online now, tell them about the server, let them talk to each other over the web, and offer a way for players to donate towards their bill. I'm planning to auto-generate these kinds of websites for each of my customers.
Ark: Survival Evolved has over 100 configuration options that server admins can set to customize their game server. I took what I thought would be the most important ones and had them configurable through my web application on launch day. Not having absolutely every option available from the start was a huge mistake. I figured that if I had 100+ options available, nobody would notice the handful that were missing.
Instead, everyone noticed immediately. I've since learned that customers mostly want — and demand — a control panel of dials and knobs that resembles a Boeing 747 cockpit and offers extreme flexibility.
When I add games in the future, I will make sure that every setting the game server software offers is available to my customers.
In past projects that didn't do so well, my most common mistake was not thinking about promotion until I was done building the product.
I'd waste weeks or months building something, and I'd believe that someone somewhere probably would want it. Then I would realize that I had no idea how to start searching for that person. I think this kind of mistake is quite common among hackers — we love building, and any excuse that gets us building faster can bypass red flags in our minds.
My advice is, for your next project, work backwards from what you're pretty sure you can promote.
Make a list of these. Before you've written a single line of code, pretend that you're all done and take inventory of your promotion channels. If you could rank highly for any search phrase, which ones would you want? Google Trends is actually a great help here, since you can test out different words and phrases and see which ones are actually popular. If you could get reviewed on any blog, which blog would help you get hundreds of customers? If you could get the biggest booth at any trade show, which one would have you swimming in new users?
Once you've done this, you'll have a much better idea of whether your product is worth building.
I'm not even talking about the step where you learn how to achieve these things (how to rank well for your lucrative search term; how to get that blog to write about you; how to self-promote on Twitter without looking like you're self-promoting on Twitter). These are all things that you can learn later, and there is lots of help available online. I really liked Secret Sauce: The Ultimate Growth Hacking Guide by Vin Clancy, but with a little Googling you should be able to find something that works for you.
You can check out my website, ArkServers.io, and see my product for yourself! If you need a game server, I'd love to have you as a customer!
If you want to talk more, just scroll down to the comments section right below! I'd love to hear your questions!
Sergey Tsalkov