I generally don't satisfied with all web hosting out there
Tags: devjournal
Published: 2021-04-10 05:12:10

It's late spring 2020 and I still a student in my local university, yet pandemic comes to changes my life as I get bored in my home. So back then, I'm gone freelancing.

As a starting discussion, I have decent experience in web development by self-learning and self-made projects (I can't rely on what I learn from my university as its pace is too slow). You can see those in [my GitHub profile](https://github.com/willnode) but for now, let's continue the discussion.

As a web developer and freelancer, it's quite common that I need a good web hosting provider for my future clients. From now on you might want to point me to some popular options like BlueHost or Hostinger. However, I won't go into that territory as I'm from a third-world country and one dollar is one freakin' huge. So I went looking for local web hosting which accepts my local money.

After some digging, I concluded... Web development can't be cheap. I will tell you that the best option there cost about $2 a month (yes I did currency conversion for you) and the worst it, it's only on the first purchase (kind of a promo), the next (normal) bill cost about $7 a month, or $84 a year.

That's freaking huge! I mean, I don't know if you, the first-world country readers here think $84 a year it's not a big deal, but considering $80 is a price I set to work on a WordPress (cheapest) website, how can the operational cost costs so much more than creating the website itself?

(Okay, some of you might say, $80 is too cheap for web developers. Indeed, but as I said, I'm in the third-world country where I can survive with only $2 a day for meals and renting a room for $30 a month, I'm sure you can figure out everything else :) )

But I have no choice, it's the best option out there, so I generally keep quiet about this as it's not my responsibility to pay the renewal anyway, and I'm fine with $2 a month for first pay, my clients would agree with me too (or maybe not, for the renewal).

From here probably you would say there's nothing else to consider. But for me, it's not, it doesn't have the features I need. Well, maybe I just fine with WordPress, but what about, say, Laravel? which requires composer install. I have to open FTP and selectively transfer some files (god-what-knows if I miss some files) as there's no other way than, say, Git, which requires SSH access. 

Also, I asked support, they say they don't support other than PHP in shared hosting. They said if I want to run some other server apps, like Python or Node.js, I have to purchase VPS (virtual private server) which is very expensive last time I checked. Arrgghh! why just SSH access is so luxurious to get one? It doesn't make sense for a hobby project.

I started to look around for platform companies like Heroku, Docker, or Vercel. At first glance, they sound promising and generous, but in execution, it's confusing at best. Wanna deploy something? I need to master the configuration files first. Wanna edit something? No, they won't give me FTP or SSH to edit files, I have to destroy and create a new deployment because that's how immutability works at the container level. And what about databases? No, they don't give me that either. So I stuck with shared hosting still.

Because of all this, around late summer I decided to take a leap of faith.

## "Fine! I'll do it myself!"

I decided to run a hosting business.

It's a kinda risky move, a bold move indeed. Since I still a student and know nothing about hosting or cloud businesses, I was thought I will go on-premise, buying all the hardware needed to run the business. But then, there is one major problem: I don't live in rural areas. I can't just rent some apartment and burning thousands of dollars for a risky startup, I don't have that much money anyway. So where do I start? No idea. Eventually, I posted my concerns on social media. I was thinking about giving up because of the sheer amount of money required to run a hosting company (and maybe the reasons why they can't be cheap).

Luckily, one of my colleagues replies to my post with "why don't you use cloud services?". It struck my head with a flash of enlightenment. I went looking and researching between the three cloud computing giants: AWS, GCP, and Azure. I decided to go with Azure because they are listed in GitHub Education Program (remember, I still a student) and Azure are the cheapest between the three.

To my surprise, cloud services today are so cheap, compared when doing those on on-premise. The best thing about it, it scales by budget. This is interesting to me, as suddenly creating a hosting business became way easier. All I do for the next three months is developing the new server and the software to manage hosts (from now I call this software, "portal"). From here, things get interesting.

## So Cheap it can be Free

The first thing in my mind, can it provide a free option? There's nothing that can beat a free option of course, and a free hosting option is rare anyway. And to my surprise, it's possible. But the road to get there is kind of rough. 

The first thing that I have to consider is the web panel. Most hosting providers came with cPanel, and I was about to install it until it came to my surprise that cPanel usage came with a paywall of about $0.2 per user per month, which is unacceptable if I want to provide a free hosting option. So look for alternatives, then found Virtualmin which comparatively has the same features.

Virtualmin is awesome, it has a builtin file & database manager, storage and bandwidth usage, support Apache or Nginx web server, MySQL (MariaDB) or PostgreSQL webserver, issuing Let's Encrypt SSL, and so many more, yet the UI is simpler and has REST API which is an absolute necessity for the portal to function.

Can it be better? I thought Apache is good enough until I come across about [this article from nginx](https://www.nginx.com/resources/wiki/start/topics/examples/likeapache-htaccess/), and then I start to worry about performance, like what happens if a hundred users come signed in? That's when I learn about [PHP-FPM on-demand mode](https://ma.ttias.be/a-better-way-to-run-php-fpm/), [the goodness in HTTP/2](https://www.nginx.com/blog/http2-module-nginx/), [the importance of ETag Header](https://www.digitalocean.com/community/tutorials/how-to-implement-browser-caching-with-nginx-s-header-module-on-centos-7), and so much more optimization else I need so the server can cramp more people under limited resources.

This all is flowers and daisies until the next three months I aware of something. When I almost run out of student credit, I looked at the historical billing, and I see the data outbound rates, it cripples me up. As been said in [some articles](https://thghosting.com/blog/the-hidden-costs-of-data-transfer-from-public-cloud/) it's one of the things that often overlooked when signing up for cloud services, turns out it's not that cheap. 

## Digital Ocean to the rescue

It's late fall 2020 and [Hacktoberfest](https://hacktoberfest.digitalocean.com/) came along. I looked at the website and something caught my attention. 

"What is Digital Ocean?" 

Obviously, it's one who sponsors the Hacktoberfest. I knew it for years, I have the 2017 and 2018 T-shirts. But I haven't know what exactly the company is. Turns out it's selling cloud services and it's way predictable and cheaper. I became quickly interested to move away from Azure. I also kind of lucky that they have a Singapore server too and Virtualmin backup and restore make the server migration easy. 

As of today, Digital Ocean [bill data transfer](https://docs.digitalocean.com/products/billing/bandwidth/) at $0.01 per GB if you exceed the transfer pool. With this large amount of data transfer available, I'm able to increase plans by about 10 times what initially available. 

## Freedom on the cloud

This was the story of how [DOM Cloud](https://domcloud.io) became. As of now, you can sign up a free hosting at 256 MB and 1 GB monthly bandwidth. A larger option with a custom domain is also available at $5 a year. 

From now on you might be thinking this all just part of my marketing plan. Actually, I just want to share something that should be common to most people when starting a job as a web freelancer: the expensive prices of operational cost and lack of features most developers need. Websites that do not take as much as resources shouldn't be as expensive as they should be anyway. 

And this is a problem in my country too, as to accelerate internet growth we have to deliver the best prices for our clients. I got all positive reactions when DOM Cloud goes available. My clients never doubt our web pricing anymore and I'm happy with my day job as a web freelancer.

## Things I learned from this

+ Building startup doesn't always start with burning lots of money
+ The best product came from solving your own daily problem
+ Recent advancements in open source technologies made this all possible

You can comment for things that get you curious from this story, but for this product itself you should check the [GitHub repository](https://github.com/domcloud/domcloud-io) or [discussion page](https://github.com/domcloud/domcloud-io/discussions) as I open sourced everything anyway.