First, let me clarify something. There are many reasons why you would want to have your website professionally hosted. However, people in certain situations are better off hosting their site themselves. For example, if you are starting a new business or playing with an idea that you are not sure will work, you might not want to pay a hosting company to host your site, at first. Hosting the site yourself will allow you to save money that you can use to grow your business. Once your business starts growing and your site starts getting a lot of visitors, then you will find it necessary to pay a web hosting company to host it for you, but until then, you need to test the waters.
If you have a computer and a high speed internet connection (DSL / Cable) you can host your own website. You will need to keep your computer on and online 24/7, which should be no big deal. Beside this, you only need to follow the 7 steps I describe below, to make your website available to users on the internet:
1) Install a web server: Most Windows operating systems either come with a web server, or one can be downloaded for free depending on the version of Windows. The web server is the program that runs in the background on your computer listening to requests from people on the internet. It's the software that finds your pages in your computer and sends them to the users requesting it.
2) Configure the web server: In this step you simply tell your web server where to find your website that is sitting somewhere in your computer.
3) Get a domain name: In this step you decide on the name that you want for your site and buy it from a provider. Domain names are cheap and you pay the fee only once a year.
4) Configure DNS: This is where you associate your website name with the IP address of your computer so users are transferred to your computer when typing the name of your website.
5) Configure your router: Your router needs to know about the computer that has the web page so it knows where to forward users to.
6) Dynamic IP solution: Most people have a dynamic IP address given to them by their ISP. This means the IP address of your computer might change. This is a problem because DNS needs to know the IP address of the computer that people need to be forwarded to when typing a domain name. There is a way to solve this problem without having to pay your ISP more money for a static IP. There are applications that will automatically update DNS when your IP changes.
7) Securing your server: The last step is to make sure your computer is protected from malicious programs on the internet by having the necessary software installed and configured.