I have been making websites for longer than I can remember. Ever since I was in 3rd or 4th grade, I have been using some big name companies for hosting. Some companies I have used over the years are Lunar Pages, Hostgator, Godaddy, host-247 and my own company at one point, Paperless Creations. When I started Unrestricted Coding, I knew there would be no form of monetization for a long long time. I mean, the whole concept of the site is to make it free to learn how to be a programmer. This presented a problem. No monetization meant no funding for hosting. This means I have to find a way to host things relatively cheaply or for free.
My first revelation was Github Pages. Since the beginning of my website development career, 90% of all the sites I have made have been just static information or maybe a blog. Github allows me to use their servers to host that exact type of website for free. Github Pages (GP) is freaking fantabulistic. Yes, I just made that word up. No longer do I have to juggle managing FTP windows, pay money for each site to be hosted AND deal with complex DNS routing (Just drop a CNAME file and you are done). So static website hosting is covered. Boom. Next, I have to deal with development hosting, production servers, DNS serving, etc. I opted to add a layer of privacy to the hosted files and forked up the cash for a github premium account at
$7 a month. Pretty darn cheap if you ask me.
To cover the DNS side of the project, I revisited to my trusty friend CloudFlare. They allow users to setup a free account, add a website, and get started in minutes. I really like CloudFlare due to how quickly it can propagate DNS changes. Not only does it implement my DNS changes incredibly quickly, it provides a small amount of DDOS protection as well. So, now, I have the robustness of Github and the DDOS protection layer from CloudFlare. Not too shabby.
There is also the concept of caching my static files and running them from a CDN. Although I don’t have bandwidth concerns with Github hosting, I do want my site to be as fast as possible. Usually this would involve me setting up a MaxCDN or Cloudfront account which means monthly costs. Luckily, however, this comes baked in with CloudFlare, so I turned that on immediately. That little setting saves me a minimum of
$10 a month (and it would be a lot more if I had used Cloudfront).
Now this is a coding site, and I need a staging area for coding and all my projects for the site. At this time, I have between 10 and 15 projects I am working on in relation to this site. I also needed a stable and powerful environment to do all my testing. This environment needed to be the same each time I spun it up… and work without me doing a lot of configuration. For this, I began the search into what is know as a “Cloud IDE”. I looked at several including Koding, CodeAnywhere, Cloud9 and more. The one I ended up settling on was Cloud9, and I haven’t looked back since. With c9 I am able to spin up a workspace and work on a project without spending a dime. Their free plan allows for unlimited public workspaces, and one private workspace. Can you guess what is private? You guessed it, the main site. Everything else I am doing (the book, editor, etc) are open source projects, so I don’t care if they are public or private. I get 1 GB of disk space, 512 MB of RAM, and 1 CPU core. That is way more than enough for doing what I do in dev.
Currently I only have one product that is sitting on a production quality server. This product is the Realtime Chatroom example built on top of the RethinkDB Realtime Web-Database. I needed to have a live example 24x7, running nodejs and a custom DB (RethinkDB) installed. For this I went to the gigantic corporate Alphabet (aka Google Cloud). Now, I did some soul-searching when picking a production platform. I wanted something easy to use, quick and cheap. Amazon Web Services Platform was easy to use, quick, and expensive. So using AWS my cost would have been greater than
$10 per month per server instance. With Google Cloud my cost is approximately
$4 per month per server instance. Which is a lot less…
I’ve really only used two companies for domains before, and those are Hostgator and Enom. Enom was a reseller I used for my personal company, and Hostgator was my first host that I actually paid for a domain with. For Unrestricted Coding I went a different route. This time I am using Google Domains for the site. There are a few reasons why. First, it is only
$12 flat a year which is cheaper than most companies out there. Secondly, I get free WHOIS privacy which usually costs more than
$5 per year and more like
$9 per year. And finally, the big kicker is I get a free Google Apps account for each domain, which means free Gmail for my root level domain.
To run the community aspect of Unrestricted Coding, I used to have a server at Digital Ocean running a Discourse forum that cost me
$10 a month. However, I axed that forum and just went with a Slack Team (which you can join at this link) - Join Slack. Slack is easy, free, and has a very nifty API to play with. I’m currently looking at moving from Slack to Discord due to Discord having voice chat capabilities… However, the web-socket approach of Discord doesn’t play well with certain firewalls that I am behind from time to time.
For those keeping count you may have summed up my total cost for running Unrestricted Coding. It is a grand sum of
$12 per month. Under that I am currently running the following.
Also my full infrastructure stack is: