Want to host your own website manually? Start here (Part 1)
Tags: linux, sysadmin, beginners, ubuntu
Published: 2023-11-21 05:54:28

## From local development to global visibility

How many times have you found yourself in this position? I have completed a web project, like a portfolio website, or an API. I have tested it to make sure it works in all the use cases, and removed all the debug statements. I have done all the development, now I just need to get it online. Next stop, a hosting service like Heroku! Or Render... Maybe Netlify?

These Cloud Hosting Platforms are good choices, especially if the goal is, above all else, to get your project visible to the public. It comes with some drawbacks

## Problems with Cloud Hosting Platforms

### 1. They are dreadfully slow

Load time is a highly valuable resource in web development. There’s an exponential relationship between the time it takes to load a page and loss of user retention. If a user waits more than a few seconds, you’re off to a bad start. Cloud Hosting Platforms give you an immediate disadvantage, as using their free or inexpensive tier offerings usually take several seconds to initially load. This is a big bummer for a few reasons. Firstly, it gives anyone who visits your site the impression that your creation is slow and lazy. And to them, this is *your* fault. You know that it's not - it was blazing fast when you tested locally! Unfortunately, the free tiers are given the lowest priority. Which leads into the second drawback…

### 3. The paid tier quality can get out of hand fast

The natural solution to the above problems is simple, with a little bit of expendable cash. However, the problem starts to become unreasonable if you want to have a couple projects live on the internet. 
Take Render, for example. Render is a popular Cloud Hosting Platform for getting your website live with little to no work on your part. For the "starter" package, you get 0.5 CPU (not sure what that means, but sounds pretty weak for a monthly cost) and 512 MB RAM (Equivalent to a Dell Dimension Desktop computer from 2001). This product comes at a price of $7 a month. And this is just for one website. Say you have 3 projects you've built that you want potential employers to be able to visit and test for themselves. That's $21 a month, for the performance of a 22 year old computer.

### 4. It's good to know how this part of the process works

There's a reason that the Cloud Hosting Platforms mentioned above are so popular with developers. It's because technically, the job of hosting the website isn't in the realm of development, but a completely different one called *System Administration*, or sysadmin for short. 
The system that hosts your website is just a regular computer, you’ll often see this computer referred to as a server. Instructing that computer to host your website takes a bit of know-how. The person with that knowledge who maintains the computer is called the System Administrator (Webmaster). It's okay if your main focus is development, but by having even a small layer of system administration knowledge, you can deploy your websites on DigitalOcean or Linode (more on these companies later on) for a small flat price, have them be super fast, and demonstrate to employers that you see and understand every part of the web development process, from idea to launch on `https://yourawesomeproject.com`.

## Solutions to Cloud Hosting Platforms

So we've determined that using a Cloud Hosting Platform can slow your well designed application down, associate it with a strange and suspicious looking website address, and cost you a lot of money if you want to have more than one site live at any given time. This doesn't mean you shouldn't use them. They might be perfect for you if you just want to quickly deploy something and don't care too much about initial performance, cost, or configuration.
However, if you, like me, feel that there should be a better alternative that solves these issues, you'd be correct. 

The alternative mentioned above is to begin the journey of becoming a sysadmin - the administrator of the system that runs your website. The best part of this is that it leans hard into the skills and knowledge you’ve already developed by being a programmer. If that sounds daunting, that's okay. There are a few new things to learn in order to get it up and running. There's even more to learn if you'd like to be a subject matter expert. It’s just like any other skill, it just takes practice. It will be well worth the short and long-term investment, as it goes hand in hand with web development of any kind. 

## Where to start

This post has been more of a list of motivations that pushed me into taking the plunge into system administration. I was tired of having my cool projects strangled by services that sometimes didn't work, and when they did, worked slowly. To get it to work as expected, I was paying over 100 dollars every 6 months for just 3 sites. The price of running your own server, and hosting as many websites as you can come up with, costs less per month than the cup of regular black coffee I just bought at my local cafe. 

This article is the beginning of a series of articles that will go into the details of picking a server, setting it up securely and easily, and finally hosting a website. I will detail each step of the way, and take you from a project sitting on your computer all the way up to `https://nonsketchywebsitename.com`

-wb19