If you google the title of this article you will certainly find lots of flavors of software for a home based web server. Most blogs will recommend Ubuntu Server or Windows Home Server at the top of their lists, but there is a better option if you are just starting out in web development or even an advanced web developer.
While there are many things to consider when you are building a home based web server some things are universal such as efficiency, streamlining, and ease of use, which I believe is the most important. The learning curve is the most time consuming part of web development because there are so many ways to do the same thing. I have spent many hours, days, and months learning a particular software or OS and later come to find a better faster method to accomplish the objective. The objective in this case is a home web server that can quickly efficiently host websites, clouds, or almost any accessible home applications you would want to deploy.
There are many software platforms that can accomplish this as you can see in google searches. The traditional methods like an Apache or NGINX server on a Linux OS is neither quick or simple for multi hosting on a home server but it is reliable and scale-able. However, there is a big learning curve that in my opinion should be a more streamlined process by now to install and configure applications.
Windows Home Server is probably the best traditional server especially for a beginner that is familiar with Windows OS. The downside is that it is not free and its Microsoft! I am not a big fan of Microsoft and have been gravitating to more open source and free solutions with great success.
I experimented with other options like OpenMediaVault, unRAID, FreeNAS, etc.. each having their pros and cons, most notably was that most of them could run and manage Docker containers. This is how I first discovered Docker and that their capabilities were perfect for my objective. The problem with these platforms was similar to the old problems. It took a lot of time to learn a platform and address issues that came up. The more time I spent with these platforms I began to realize that they were actually in the way of my objective.
Docker is basically a program that runs applications called containers. The containers include all the files needed to execute the application and you can find a container on Docker Hub for almost every major software available. There are also containers to manage all other containers in a Graphical User Interface, so again perfect for beginners and valuable for advanced users. Docker can be installed on many types of Operating Systems. I have found that deploying Docker containers on a slimmed down Operating System is a highly efficient combination to set up a web server and can be done mostly thru Graphical User Interface, that is there is minimal typing of commands in terminal. This means that my tutorial is perfect for a beginner and advanced users can also find valuable information to streamline their operations.
From my research I found the original Linux OS Debian to be the best for a Docker environment web server. It was between Ubuntu Server and Debian and the key factors for this choice were the size of the OS and is what is installed needed. Since I was using Docker I did not need most of the server software included in Ubuntu Server or any other server OS for that matter. The Debian installation ISO is only 696MB, and after installation, all that is needed is to install docker and begin installing containers accessible from the web.
The version of Debian that I selected for my home web server is Debian 10.09 AMD64 XFCE. This was based on the specifications of an old computer I had available to use as a web server. You should check the specifications of the computer you want to use as your home web server and select the appropriate Debian OS version for your computer.
The Debian XFCE has a fast graphical desktop environment that installs minimal applications. This is perfect for beginners to directly access and maintain the home web server without having too ssh into it. In fact I rarely use ssh anymore unless absolutely needed. I primarily access my web servers on a separate computer’s web browser accessing a network IP addresses or a fully qualified domain name to Docker containers on the server. I have the easiest detailed tutorial on creating a free home web server beginning with instructions how to download and install a Debian OS followed by docker and the managing container. There are more tutorials to come including obtaining and maintaining a free top level domain name and dns server to point to your IP address. These are high value tutorials guaranteed to work because i have successfully used these systems for years without fail.