Hello, I'd first like to thank you for this opportunity to be featured on Indie Hackers.
My name is Arif Tukiman. I am currently based in Johor Bahru, Malaysia, where I lead my startup Cool Code. I started Cool Code from a Technopreneurship program while earning my M.Sc. degree, and back in January our team released RunCloud.io, our very own cloud server panel.
RunCloud.io is a SaaS that helps you setup, configure, manage, and monitor your VPSes (virtual private servers) on cloud hosting providers, more specifically for PHP web applications. Your VPS can be on Linode, Vultr, Digital Ocean, Amazon Web Services, Google Cloud Platform, or any other provider as long as they are running on Ubuntu 16.04 (currently).
We built RunCloud to help our own web developers and the issues they faced during development, deployment, and maintenance. Based on their response, we saw the potential to productize the software — we just knew it could help other developers dealing with the same problems.
The story really begins two years ago. My partner, Fikri, took the idea and thought that perhaps we could develop a tool for web hosting providers, but we didn't have a ready and stable product at the time. We soon realized that the market was very competitive in that area with the presence of established players like WHM, CPanel, and Plesk.
So in early 2016, we pivoted our solution to cater more narrowly to PHP developers and freelance web designers. It's a market closer to our hearts, given that we ourselves are PHP developers.
We validated the idea for this narrower product by taking a look at the market and checking out competitors. There were indeed competitors, but no major players like CPanel or Plesk. The businesses in our space were also just about 2-3 years in age at the time. And checking out their features, we believed we could offer the market something better.
My partners and I are computer science graduates. Amir and I were more into mobile app development. My other partner, Fikri, has more experience in security and web. Previously, Fikri had also created a VPN service that he'd sold subscriptions for.
To build RunCloud as a business, I had to take on the role of CEO. Amir assumed the role of COO and led our marketing efforts, while Fikri, the brains behind the RunCloud architecture, became the CTO.
When we started working on the product, we were just college kids fresh out of our master's degree. We had no work experience. So to be honest, money-wise, there was not a lot to spare.
Fortunately, we were also single college kids who didn't require much to survive on.
The first thing that came to mind was how our MVP should look.
We wanted one, but it had to be better than the competitors' out there. We didn't have a lot of money to hire additional help, so we took longer to develop it.
For good customer experience, we believe that our landing page and documentation also had to be in tiptop shape. You have no idea how much work goes into preparing a website, writing technical documentation, or perfecting customer flow and experience. Now, I believe that it takes as much work as building the actual software.
As I mentioned, we initially built software for web hosting providers and we pivoted from that. It took a year to change the initial prototype before it was ready for launch. Then when the time came, we carried out a relatively quiet launch among developers and programmers we knew from Malaysia. And it has been a hit ever since.
You may be wondering how we funded ourselves. Well, while Fikri worked mostly on the SaaS, Amir and I took on clients for mobile application work. There has to be a certain level of trust to pull this off. If not, you can imagine how things could fall apart between the three of you. I guess I am blessed with great friends and partners.
About our RunCloud solution. It is mostly based on PHP Laravel. We have our agent software that sits on our clients' server, which is developed with Golang.
Our initial version was built with Node.js, but we had a bit of trouble whenever the Node.js on the server upgraded itself. For now, we only support deploying a fresh Ubuntu 16.04 LTS.
We received some support along the way from the MAGICX incubator program by Universiti Teknologi Malaysia, the JOMWEB Developer community in Malaysia, the Malaysia Global Innovation & Creative Centre, and more. There have also been many individual supporters who are just too numerous to name. Without them, we wouldn't be where we are today, and we're forever grateful for their help and support.
I guess we are fortunate to be around a good startup ecosystem in Malaysia.
Our first soft launch was at JOMLAUNCH4 in November 2016, an event by the JOMWEB Developer community in Malaysia. We even won RM1000 for best project.
After that, Amir and I just started sharing everything anywhere we could. Reddit, ProductHunt, Hacker News, alternative sites, startup directories, forums, blogs, and more. But no major breakthroughs happened. We even tried contacting bloggers for reviews, but of course most replied with a paid review package. Since we don't really have the money, we haven't bought any paid reviews.
We also created a YouTube channel interviewing PHP programmers from around the globe. Those who have agreed to be on our show are just awesome. There is so much to learn from them, so feel free to check the channel out and subscribe. Tessa Mero, the organizer of PHPPNW conference, introduced us to great guests, like Ben Edmunds, Ed Finkler, Chris Hartjes, and more.
I think what worked for us is that we started off with a really good product. After that, we needed to take the time to network and get to know people. Tessa Mero helped introduce us to a number of PHP programmers to be interviewees. We never knew beforehand if it was going to work or flop, but we believed in our product and its benefits, so we just kept hustling.
We definitely get a lot of praise from existing customers. I believe they help greatly in spreading the word to other developers. Since releasing our referral (affiliate) program, we are seeing more and more reviews from our customers, which help bring in a lot more traffic, leads, and new conversions.
Month | Pageviews |
Nov '16 | 11561 |
Dec '16 | 4641 |
Jan '17 | 4596 |
Feb '17 | 3060 |
Mar '17 | 15788 |
Apr '17 | 12206 |
May '17 | 14136 |
Jun '17 | 12688 |
Jul '17 | 14173 |
Aug '17 | 19756 |
We are fairly new to social media, SEO, and email marketing. We started email marketing a few months back, but mostly for communicating with our existing customers.
We started charging from day one. We knew we had a good product by comparing ourselves to competitors who were charging way more for less features. Our packages are simple. A free account and a $10 per month account for an unlimited number of servers. That was the only way we knew we could make money then. (Of course, things have since changed.)
We use Braintree to charge our customers. This is the easiest solution for us, a Malaysian company, to be able to charge customers that come from all over the world.
So far, we've reached about 2,300 users from more than 20 countries worldwide. From current conversion to paid user, our MRR has been steadily growing at 24-29% from month to month.
This month (September 2017) we are on track to grow slightly over $2,800. On top of that, we just launched our Backup Service, which is an optional add-on for clients to purchase.
We are seeing a healthy pickup rate from many of our clients. Along with the $10 per month that we are collecting, we may break $4,000 per month for the first time.
I think this is in line with a lesson we learned from legendary Jay Abraham when it comes to growing revenue. There are generally only three ways to go about it:
As a SaaS business, we're already doing #3. And we are always working to acquire more customers, so that covers #1. And now, at last, we have #2.
With the Backup Service, we are adding something else that customers can pay us for. To be honest, this wasn't the original intention. We'd received a lot of feedback asking for a backup feature, so we implemented it. While we did have other plans and priorities a few months ago, we decided to listen to our customers' needs instead. And I think that has already paid off very well.
Along those lines is a gem from Dane Maxwell (TheFoundation.com) that I'd like to share: "In business, you will make a lot of mistakes and you will do alright if you do this one thing right — listen to your customers." Great advice.
Honestly, when it comes to our own survival, RunCloud does not provide enough to cover our own wages yet. We still take in custom mobile and web application work. At times, we provide training related to programming. What we earn from RunCloud will most probably go back into the business. Earning in USD while living in Malaysia does help with living expenses, as they are low compared to USA or Europe.
We have a lot. Ultimately, we want RunCloud to be able to provide everyone on the team and their families a good life. By the end of the day, that is what it is all about.
When it comes to the product, we have a lot more features to roll out to help our customers in their day-to-day challenges as a PHP developer.
We are working on an API for RunCloud, as this is a big request from our customers, so they can develop a panel for their own customers. Another top feature request is the team feature so that they can assign other users to help manage servers in their RunCloud panel.
With the growing revenue, we will invest it back into the business. Soon, we'll be more aggressive with online advertising and paid reviews. We will also be investing a lot in content marketing and providing good content for our customers and PHP developers in general.
The challenge we're facing right now is low funds. I think you've probably guessed by now that we have not spent much on advertising. Just little tests here and there. It is tempting to pitch and take investments. I am still considering it. We may take in investors, but being able to grow RunCloud without outside investment gives us a lot of freedom in terms of ownership, business direction, creativity, etc.
The other thing that we worry about is possible new players that may come into the market. Being the underdog, a friend once shared that you should worry about the newcomers, not the established players.
The challenges we faced in RunCloud were that once we launched the product, we were slightly nervous about product stability. Since we didn't know exactly how RunCloud would perform at first, we received a lot of bug reports.
We took about two months to release a more stable version. So, from this, I learned that we needed to test with a good number of users before a soft launch, which we had only previously done internally.
We self-funded to develop the product and did our own marketing. Since we didn't fully push in marketing because of limited funds, we were alternatively using zero-cost marketing for about four months to gain tractions through Facebook Groups and communities. We also put our service in cloud hosting forums.
For me, growing organically is okay, but sometimes it can feel as if business growth is slow. Hence, it would have been better had I prepared and planned for some early fund raising parallel with using our own funds.
International market penetration is also one of our biggest problems. Running a business with a worldwide target audience is not as easy as it sounds. Finding the right channels and connections takes time. So, a fast plan of execution for me is a must for trial and error within a short period of time in order to know the results.
Actively engaging yourself in a group or community of your target audience is important to make sure the awareness of your product is easy to deliver. In other words, it is good to find people who have a problem and want or need the solution that you have for them.
With a worldwide audience, the different timezones are a great challenge for us, as we need to plan our support times and rotation among team members. As a SaaS startup, we try to prioritize a very good customer experience is a priority.
I guess, to some extent, as English is not our mother-tongue, that poses some challenges too. Our website initially contained a lot of grammatical errors — maybe it still does. That does not look professional at all, especially when you are competing globally. But we've done our best to improve this.
RunCloud does a really effective job at targeting a specific niche in the tech market. I did a lot of market study and research of the trends that would work well with our business model. And this research had to be aligned with what our CTO was doing while developing the product.
I make a point to make friends with a lot of freelance web developers and also CTOs in some tech companies. From there, I learn a lot about what they need from RunCloud and how we can improve and enhance it.
I sometimes obsess over the UI/UX to make sure users will always be impressed when they use our software. So, I draft a lot and work directly with our front-end developers to make sure everything runs smoothly and looks awesome.
I rarely read books previously, but RunCloud changed that mindset, and now I mostly read books about business, finances, and also books about being successful in the tech startup industry, like Elon Musk: Tesla, SpaceX, and the Quest for a Fantastic Future by Ashlee Vance. This new habit has inspired me — to keep motivated, I need to know that I'm on a path toward success.
I think one other advantage that we have is that we are developers who are developing a product for developers. Consequently, we understand to the core how developers think and feel, which helps in planning for development and marketing our product.
If you're building a tech startup, finding a good team is very important. Each brings different specialties and skills that suit the team and product development needs. With a good team, the product can be delivered in excellent ways.
As a founder of a tech company, bear in mind that you yourself might struggle, but you should pay salaries to your team members and partners first. Keeping the team motivated is very important.
Always check the market trends, no matter what your business field or revenue model is.
Think forward, and don't limit yourself. Think as a team leader. Each of your team members are leaders in their own role, so don't act too bossy in a startup. There is no need to be that type of leader.
Choose the right mentors for whatever business you are involved in. This is a must for continually heading in the right direction.
Don't rely on people, forces, or funds from outside of the business to develop the business itself. You must be the main drive of your business, regardless of outside factors.
Self-development through the struggles you'll face are important for continuing to move forward.
Pay constant attention to your customers; don't become so preoccupied with the activities of your competitors that you forget about your own business. Focus on improving your own business and ensuring that everyone who is associated with it has a great customer experience.
I think Jeff Bezos said it best when he said, "Obsess about customers, not competitors."
You can learn more about RunCloud at runcloud.io, and on our blog at blog.runcloud.io.
We post updates about RunCloud on our Facebook page, (http://fb.com/runcloud.io), and on Twitter, (http://twitter.com/runcloud_io).
We also have a Youtube channel.
Aside from tutorial videos, we have an exclusive channel called "RunCloud Show". This show invites developers to open up and communicate with the world as we explore what they are making, projects they are working on, and to share their expertise and experiences on what they have done so far. Some great guests we've had on include the founder of Concrete5 CMS, Franz Maruna, Grumpy Programmer, PHP-testing advocate Chris Hartjes, the EC-CUBE team, the #1 open source shopping cart in Japan, and many more.
Runcloud sounds quite similar to Cloudways PHP site hosting. This platform provides a managed hosting on top of infrastructures, like AWS, DO and others. The platform automatically configure the server with stack so there is no need to install packages manually either.
Hey @ariftukiman , I'm a solo founder and I really love your interface. Since I'm running a multi-db multi tenant Laravel app, it's nice to have the ability to create multiple databases easily.
Great work!
Hi @josiahmann !
Thanks reading my journey, hope you enjoy it and get something. Sure, great suggestion by the way.
I'd like to offer free hosting to my subscribers here (https://uisumo.com) I'd like to ask some help regarding the APIs, which you used run runcloud.
Hi Arif! Thanks for sharing your journey!
How has your experience been managing multiple IaaS providers when it comes to costs? For instance, when you have all your usage based on AWS you can make use of reserved instances which reduce the cost almost by a fraction of two; having support for multiple hosting providers might make the math more complex. Did you find that as an issue? Any tips for those in a similar area?
Thanks!
Hi Cirocosta!
While RunCloud supports multiple providers and we do have clients connecting servers from multiple providers, we can't really advise on costs very much.
Our own experience with RunCloud is mostly running from a single provider. We have experimented with multiple providers but not running them integratedly where the servers communicate from one another. Mostly separately, each its own system.
Estimating costs of infra incurred by providers can be tricky, especially when your system spans across multiple providers, committing to reserved instance, calculating bandwidth costs, etc.
Honestly we don't have much experience with that. But I think if you really need to get at it, you'd have to table out all the pricings as stated by the providers. AWS reserved instance really cut costs down, but may require a bigger upfront costs. And when you have all the pricing, you'd need to estimate your usage. If you have some data of your current use, previous bills, I guess that would help. Maybe from that, you can estimate your future growth and usage. And with that, you can estimate the costs that the providers would bill you for.
I hope that helps.
Hey! Thanks for the reply!
Yeah, that makes sense and I agree, reserved instances definitely make you put some relevant amount of cash upfront.
I'm about to start a gig that requires some "always up" servers in multiple regions so I was hoping there was something about the pricing across multiple providers (or regions as, in AWS at least, different regions have different costs) that I was missing.
Interesting to see that it looks like that's a problem to be solved for those businesses that aim at multi-region / multi-provider support. Maybe I'm diverging a bit from the main thread but have you seen other folks targetting such problem?
Thanks!
Hi Cirocosta!
Sorry late, I'm not sure about that. Seem the problem was faced by some, there would have been discussion in other dev community or forum.
Hope you can be figured out!
Great interview and you are really good at being clear and concise :) I found a lot of great advice and perspective in your answers here. I like that MRR chart, what software/app are you using to track that, or is it just Braintree itself? Thanks
Hi valuearb! We use ChartMogul and yup, it's one of a great tool to track SaaS business. Btw, thanks for reading our journey!