Hosting options

For those who are new to setting up and managing web servers, there are several things that are important to consider when determining if this is actually a desirable course of action. If you have already decided you want to host your own, consider the following in determining what to host with and where to host:

Operating system
Most of the Web is served by Linux, Windows Server, and BSD

Linux
Linux is the most popular operating system for serving websites from. It is (relatively) easy to use, well documented, well supported, regularly updated, has a vibrant and helpful user and developer community, and it's free (both gratis and libre).

Windows desktop vs Windows Server
Using a desktop version of Windows to serve a website will usually require using software that is poorly ported from Linux. Using Windows Server will mean buying a new and expensive Windows Server license, then running a web server software, IIS, which is generally not well supported or documented for novice and enthusiast admins.

Linux vs Windows
Linux is an excellent choice for novice and enthusiast admins because even many enterprise-quality distributions are free, updated regularly, supports nearly all hardware ever made (though support can be weak on some newly developed hardware), is largely comprised of the stuff the Internet was conceived in and most modern networking based upon, and there is tons of free advice and support available on the Internet. Windows Server is usually used by enterprises due to external dependencies, though its adoption has grown by leaps and bounds in the past few years, it still remains a poor choice for the novice or enthusiast do-it-yourselfer.

Linux vs BSD
BSD is typically not a good choice for beginner admins because it doesn't support as much hardware, can be difficult to upgrade, and online support is not as vibrant and is often geared more towards experienced admins.

Linux Web server stacks
The Web server 'stack' refers to the programs installed in the Linux server that support serving websites. Although there are many combinations, two are more popular than the rest.

LAMP vs LEMP
LAMP = Linux, Apache, MySQL (compatible), PHP

LEMP = Linux, nginx (Engine-ex), MySQL (compatible), PHP

So the only difference between these two web servers is nginx vs. Apache. Generally, nginx requires fewer resources and serves sites faster than Apache. Although Apache has far more options than nginx, nginx offers pretty much everything the typical Web server requires.

The downside of nginx is that it can be somewhat more difficult to find online help, as many admins are more familiar with Apache, which is has been around much longer. Setting up sites with nginx is different in many respects to Apache, and some aspects of software packages require some reconfiguring of the server to utilize functions called by the software developer. However, the nginx community is typically very willing to help and many online tutorials cover how to configure nginx.

UNPM Server
UNPM Server is a term invented by the creator of this site and is a variant of the LEMP server. UNPM stands for Ubuntu Server 12.04 LTS, nginx, PHP-FPM, and MariaDB. The Ubuntu version used in the UNPM server is scheduled to migrate to Ubuntu 16.04 LTS, which will be released in April, 2016.

The UNPM server is created for becoming a platform for novice and enthusiast admins. The idea is to have a server configuration that is uniform and well understood by other members of the community, thus more readily fostering a community where even only slightly more experienced admins can help out the lesser experienced. As admins build out their servers to support various different software packages, eventually the UNPM Server would have enough online tutorials to support doing almost any project.

Ubuntu Server 12.04 LTS
For novice and enthusiast admins, the specific Linux distribution used will not make a significant difference beyond choosing one the several popular free distributions, so Ubuntu will serve as well as any other. Ubuntu tends to be very popular with people new to Linux so the community that supports it is more accustomed to answering questions from those who are brand new.

nginx
The nginx web server software is mature enough to support nearly all popular packages, so there is very little that an admin might want to do which cannot be done with nginx. Once nginx is understood, it is actually quite easy to use and configure. It is also much easier on resources, so lighter hardware and smaller VPS or cloud servers can be used.

PHP-FPM
PHP is used in the most popular software used by web servers, so it is a good idea to have the server configured to support it. Due to some of the limitations in nginx, the PHP-FPM bundle is ideally suited to the server, which will be configured to support nearly all popular PHP based programs.

MariaDB
MariaDB is a fork of MySQL and remains MySQL compliant database software. It directly replaces MySQL but does not require any reconfiguring of software that uses it. MariaDB has generally been better developed since forking from MySQL and has seen very rapid adoption.

Hosting with a residential ISP
Old computers can make fantastic web servers since the computing requirements for a web server are actually quite low when compared to regular desktop work. So if you're one who enjoys making use of old equipment, this can make the project that much more fun.

Disadvantages
Many ISPs do not allow servers to be setup using the connections they provide without having the account upgraded to a business account. This is usually stated in the Terms of Service and may be enforced by blocking incoming traffic to popular web server ports. For a small, personal site, violating these terms doesn't usually attract the attention of the ISP because the traffic is quite small and the port blocking can be dealt with using a DDNS service such has Dyn or Free DNS.

Dynamically assigned IP addresses. Most cable ISPs provide dynamic IP addresses, meaning that your IP address may be changed at any time. To get around this, you will need to use something similar to the previously mentioned Dyn or Free DNS services.

Spam blacklists. If you want to set up a mail server, then you may find that your IP address is permanently blacklisted and will forever end up in recipients' spam folders. This is because major spam trackers automatically blacklist IP addresses for ISPs that do not allow servers per the ISP's Terms of Service. There are some ways to at least partially mitigate this effect, but there will never be a way to use a full mail server from the IP address without automatically being sent to spam folders.

Lastly, your connection may not be fast enough or robust enough to use for hosting. Although most connections nowadays have a high enough upload rate to support a personal site, some of them seem to drop or lose connections often enough to make browsing inconvenient.

Advantages
Cheap! You've already got the connection, so it's nothing extra to just throw the server onto the network and start serving away! This is especially true if your ISP doesn't mind and you have a static IP address.

Better performing hardware. It's quite likely that your old Core2Duo PC with 2 GB of RAM and 80 GB HDD are overkill for your performance needs, and with a properly configured web server and enough available upload, this should be able to handle some pretty serious levels of traffic.

Cloud or VPS hosting
A VPS or cloud server is an inexpensive hosted server that you manage yourself. The price is low because one physical server can host many cloud servers and the customer service provided is minimal - meaning you are completely in control of the server. Popular cloud hosting providers include Rackspace Public Cloud, Amazon AWS EC2, Linode, and DigitalOcean.

Disadvantages
Price. Although a personal site using the smallest option comes in at $5-20 per month, that's still more than the price of using a residential connection. However, these additional costs can be offset if you are currently hosting sites on shared hosting accounts. In fact, moving several shared hosting accounts to one cloud account can result in a net savings - although that savings will still be less than if a residential connection is used.

Performance. The bottom level servers offer minimal performance, though are generally more than adequate for low traffic sites.

Privacy. The top tier providers listed above certainly are among the best for keeping their systems secure, but they are all bound by the laws of the U.S., which are ever more intrusive. Without having physical control over a server, it is impossible to know who is monitoring its usage.

Advantages
Bandwidth. Although you may never need it, even a bottom level plan can reliably offer at least 20 Mbps of upload, considerably more than most residential upload speeds.

Image backups. Cloud providers make it incredibly easy to save an entire image. For someone new to server management, this is a great tool because the administrator can simply save the image before trying something new and after successfully installing new features or configurations. Rebuilding from image is very easy, so the event you make your server 'non-responsive' (i.e. broken), you can just rebuild from image to go back to where you were the last time you saved it. In fact, sometimes it can be faster to just rebuild from image than to track down configuration errors (though not as good for gaining 'wisdom'). It is also a great way to put a backup plan in place without having to actually learn how to do real backups.

Hassle-free with static IP address and DNS management. Since the server is offered for serving the Internet, there is no reason to use any intermediary services, such as Dyn or Free DNS.

Scalability. On the off-chance that your site attracts the attention of a popular blogger or a Reddit link, it is very easy to increase the performance of the server for the duration of the interest in your site, then scale it back down when traffic dies down.