I first bought a domain name in 1995, and hosted our company's new web site on a Windows-NT server in our office using our expensive and slow dedicated DSL internet connection. My business partner thought it was a waste of time and money, and he was probably correct. At the time, the tone of the internet was quite different - it was frowned upon to do any marketing - it was all just informational. Of course, if we had any clue how the internet would take off, I would have registered a bunch of domain names!
These days, it seems lots of people want to start a web site, and want to do it as cheaply as possible.
If you want to start a blog as cheaply as possible, with as little hassle as possible, ignore everything on this page except Shared Hosting. You can get a good server that will run Wordpress well for less than $5/month.
There are a wide range of options for web site hosting, but I like to use three categories:
You don't maintain the site at all, but you have some control over how you want it to look, and you fill in the content. Examples are shopify.com for e-commerce sites, or wordpress.com for blogs. These can be quite expensive, but are worth it if you just want to focus on your business, and not spend time hosting the website. If you want to host cheaply, you have to look elsewhere.
With this option, the provider maintains the servers and provides tools like CPanel, while you chose and install software - usually by clicking a link. With this option, you have a fair degree of control over your site. You are fully responsible for building your site, but the provider is there to help with technical issues.
Pricing in this category is quite variable, but generally you get what you pay for. If you are hosting a blog or a small web site, you can get good-performing sites for $60/year. If you are doing ecommerce or need a more powerful site, you should plan on paying upwards of $150/year.
I've set up sites for clients on Bluehost, A2 Hosting, and many others, and I really like Greengeeks. They have data centers in Canada, Europe, or the USA, the pricing is very reasonable, and they run the servers on renewable energy.
The very best deal I have seen lately is with a provider that I highly recommend: Siteground, who have one data center in the US and three in Europe, and they also offset their carbon footprint. As of May 2020, you can get 3 months hosting for 99 cents. After the 3 months, you should sign up for a year to get the best deal - month-to-month is expensive with any of the providers. I have two WordPress sites running on their Iowa data center, and I highly recommend them - their default WordPress install includes a custom plugin to set up optimization & caching, so you get a fast-loading site from the start. They also have a very slick migration option if you already have a WordPress site on another hosting provider - you install a custom plugin on your current site, and it makes a copy onto your new SiteGround site, even making all the changes if you are using a new domain name.
Basically, you cannot go wrong with any of these hosts, just take a look at what deals they are each running.
The provider spins up a Linux server, and you use ssh to log in and issue commands. You have full control over what you install on the server, and are responsible for backups and failures. This category can be further subdivided into VPS, Cloud, dedicated, and self-hosted, but regardless, in this category you have the most control and you have the most responsibility.
If you don't know and don't want to learn how to use the Linux command-line interface, then you should stick to the first two options. The rest of this post will assume that you know Linux, or are looking to learn, and want to do things that are not possible without full access to the server.
Root-access servers have the widest range of power and price - this can be the cheapest option if you need a small server, or the most expensive but most powerful. For example: you can spin up a small Linux server on Google GCP, and run it for free forever, or you can spin up a powerful server on any of the cloud providers and easily spend more than $2000 per year. On most of the cloud providers, a new user can get a small server free for a year, or a powerful server free for a few months.
The first decision when shopping around for a root-access server is just how much vCPU and RAM you need. Basically, for a Wordpress or Drupal site, you will be running MySQL, Nginx or Apache, and PHP. Remember that unlike shared hosting, the database is not running elsewhere, so the entire workload is sharing the resources assigned. While you could run that stack on one vCPU with 512MB RAM, it would not perform well. You would be much better off with at least 1GB RAM, and more RAM and more than one vCPU would perform better. The reason that size matters in this instance is that you pay more for more RAM and more vCPUs - more is always better, but it costs. I personally consider 8GB RAM and 4 vCPU as a powerful server, and will cost a bit - $40/month would be a reasonable deal, but it's easy to pay more.
I'm ignoring disk space because firstly, it does not change the price, and also when you pick the RAM and vCPU, usually the disk space allotted is sufficient to your needs.
A small server can give good performance if you run a non-database CMS like Grav, or a static site. With Cloudflare in front, this blog would run fine on a VPS with 512MB and one vCPU. However, most people like the flexibility of a full CMS like Wordpress or Drupal, so they need a larger server. For e-commerce, you definitely need a larger server, but at least you will be making money!
If you can restrict yourself to a static site, you could run it on the smallest server you can rent, but you should really look into hosting on AWS S3 without a server - that can give excellent performance for free.
A cloud provider is your best option if you want to be able to scale your site quickly when demand grows. Amazon AWS, Google GCP, and Microsoft Azure are the top contenders, with IBM Cloud and Oracle Cloud as close competition. I've spun up sites on all of these except Oracle, and they are very similar - somewhat difficult to navigate, very difficult to estimate pricing ahead of time, very easy to get a large monthly bill, and very easy to end up with a regular monthly bill even after you have shut down your server.
Amazon offers a unique option called Lightsail, where you can spin up a Linux or Windows server with a fixed amount of resources for a fixed monthly price (as little as $3.50/month, but a solid server for $10/month). I've always thought this was an excellent idea, although for some reason I've never used it - I always just go for a base EC2 server. If you are starting out with AWS, you should seriously consider Lightsail.
Another good option is Digital Ocean. They sell what they call droplets in a "Virtual Private Cloud Network", but you can treat them as a VPS. Quite inexpensive - you can spin up the smallest droplet for $5/month, and a reasonable size from $10/month. If you want to give them a try, use this referral link and you will get $100 in credit for 60 days: try Digital Ocean. I've used them on a few projects, and they are reliable and quick.
You can also shop for a cheap VPS on Lowendbox and you can find some real bargains. I've used these mainly when I want a cheap development server - I would not feel comfortable hosting a client's website on a cheap VPS, but I've had good luck with them as dev servers.
I've rented dedicated servers a few times, when working on a system that had high CPU needs. We got a great server from IBM Softlayer (now IBM Cloud) which performed with the flawless power and reliability you would expect from IBM, but had a remarkably high price. I've also used Joe's Data Center, in Kansas City, Mo. KC is pretty much in the middle of the US, and Joe's have very high bandwidth connections, so we had superb performance both in our development office on the west coast and our client's office on the east coast. I also got a kick out telling people when they asked that we host at Joe's.
Last and maybe least, there is self-hosting, where you provide the server and the network, you do the backups, and if/when the server crashes, you fix or replace the hardware. Lots of fun. As I said above, my company self-hosted our site back in 1995, but within a few years we moved the site to a hosting provider. The main issue with self-hosting is the network - most ISPs do not want you running a web site, and often have specific terms-and-conditions that ban the practice. However, most developers self-host during a development project, and the same skills needed to set up a site on a root-access server can be used to self-host if your network provider allows.
In the case of this blog, I'm using a raspberry pi 3B as a server, running a flavor of Debian Linux, using the Nginx web server, and the Grav no-database CMS. The pi is the size of a pack of cards, and does not draw much power. It's a low-power server and does not even have a disk drive - the storage is a micro-SD card, like you would use in a camera. If you had a camera, that is, and were not just using your phone. Anyway, having run a lot of high-power sites, I'm having fun seeing what I can do with this. I have to admit, though, that I have a little Google GCP server spun-up and waiting as a replacement if the pi has problems!
If you are interested in more discussions about hosting, you should check out