In this tutorial we will go through each step needed to set up a Web server at home using an old computer, an Internet connection (with access to the configuration of your router) and some spare time.
In the end of this tutorial you will have a server that displays web pages, serves files in a cloud, works with FTP, sends e-mail alerts, does automatic backup of data and, of course, that you can access from anywhere in the world.
It is best if you have a computer with a minimum of, let's say, 512MB of RAM and 10GB of hard disk. This tutorial also works if you have a RaspberryPI since Raspy also runs on GNU/Linux although it might be slow depending on your model and hardware specifications.
If you don't have a spare computer right now you can also follow this tutorial using a virtual machine. We have a tutorial about VMs too. This is perfect if you want to use your server as a development environment on your local machine while keeping full control of your environment and being able to mimic your production environment.
This tutorial uses almost exclusively the command line (no graphical interface). If you want a tutorial about using the command line we have one for you. I hope you won't need to be a command line wizard before following this very tutorial but if you have trouble let me know!
Also keep in mind that this tutorial is intended for educational purposes. We will go through each step manually in a way that you can understand what's going on. It is not a substitute for a professional web hosting because system administration if a full time job and requires expertise. That being said, I have servers at home with a 99.9% uptime for the past several years, that have been working flawlessly with minimal maintenance. I hope you will be able to configure your machines to have the same joys of home serving as I do!
Don't be scared by the length of this tutorial, take your time and follow each step, understanding why you are doing it. I'm sure it's a rewarding experience for every geek, GNU/Linux enthusiast or aspiring system administrator. Here is the outline of this tutorial: