The best reason to host your website at home is to learn how it all works. For more information about the pros and cons, see should I host my own website?
Warning: running a server of any kind at home is a security risk. Security problems are sometimes found in server software, and these can be exploited to gain access to or damage your files. Your computer must be kept absolutely up to date with Windows Update or the equivalent for your operating system if you intend to run a web server on it. If you choose to run Apache instead of Internet Information Server, you'll need to keep your version of Apache absolutely up to date too. This doesn't eliminate the risk -- it only minimizes it. You run a server at home entirely at your own risk. If you do choose to run a server at home, I recommend finding an old PC on the curb and setting it up as your home server, reducing the danger to your own computer.
Here are the steps to follow to set up a website hosted entirely on your own Windows PC. First I'll present the general steps, then I'll break down the details for you:
1. Make sure you have cable modem, DSL or another high-speed connection. A dialup telephone modem is NOT good enough.
2. Get a DNS hostname for your home Internet connection.
3. Get a static local IP address for your computer within your home network.
4. Configure your router to correctly forward connections on port 80 (the HTTP port) to your web server. Even if you think you don't have a router, you probably do— many popular cable and DSL modems include wifi or wired Ethernet jacks for multiple computers, which means they contain a built-in router. If your ISP blocks port 80, choose an alternative port number and forward that (or get a better ISP that welcomes websites at home, like Speakeasy.Net).
5. Configure Windows Firewall to allow your web server to communicate on port 80.
6. Get Apache, a free, high-quality web server program. Windows users also have the option of installing Microsoft IIS.
7. Test your web server from your own computer.
8. Replace the default home page with your own web page. Now the site is your own!
9. Test your web server from a computer that is NOT on your home network to make sure you followed all of the steps correctly.
"I followed all the steps and I get my router's login page instead of my home page!"You are trying to access your website by name from behind your router (from one of your own PCs). With some consumer-grade routers, this does not work because the router automatically assumes any web connection to itself from inside your network is an attempt to log into the router's configuration interface. It's a pain, but this fail-safe mechanism does prevent you from locking yourself out of your router's web interface. So test from outside your own home network or have a friend do that for you. If you can access your home-hosted website from someone else's computer, then you don't have a problem. If you want to access your site from a computer behind your router, you'll have to access it at its static local IP address instead of by name.
Step One: Broadband
Get cable modem (from the cable company), fiber optic or DSL (from the phone company and various other companies). If you can't do that, you'll have to host your website in some other way. Your computer must have a fast connection to grapple with video and audio files anyway. You don't necessarily have to go with your phone company's DSL offering. Check out broadbandreports.com for independent reviews of cable modem and DSL companies. Upload speed, not download speed, is the most important feature for hosting websites at home.
WARNING: Verizion FiOS is fast, and their routers are good for home hosting, but as of this writing their terms of service specifically forbid hosting servers unless you get business service.
According to their terms of service, you may be banned completely or have your speed restricted. Watch out for a clause about servers in the agreement of your Internet provider.
"How fast will my home-based website be?"The main limitation will be your upload speed (uplink speed). Cable modem connections typically offer fast download speeds, but upload speeds are often limited to between 1mbps and 4mbps (4 million bits per second). Fiber optic connections tend to have upload speeds just as good as download speeds, but watch out for their terms of service which may forbid servers, especially if you do not sign up as a business.
There is no fixed limit on the number of users who can access your home-based website at the same time - things just slow down.
Don't try to host video (.mp4) files directly unless your content is unacceptable to YouTube. Embedded YouTube players work correctly on all devices and save you a huge amount of bandwidth. For more information, see my article how fast is my website?
Step Two: Dynamic or Static DNS
Other people can't talk to your website if they don't know the address... and if you have a broadband connection, your address usually changes often. You can solve this problem by using a dynamic DNS service. Even if your IP address doesn't change, you still need someone to host a DNS server for you, unless you are willing to put up with giving users a URL that begins with a string of numbers. This is a common requirement both for hosting websites at home and for hosting torrents, so I've written a separate article explaining how to get a hostname for your computer at home.
Step Three: A Static Local IP Address
If you have a router... and you do, if you have WiFi (wireless access) or more than one computer... then your computer receives a new local address on your home network, or Intranet, every time it is powered on. But to forward web browser connections to your computer, you need an unchanging address to forward those connections to. This is also a shared requirement both for hosting websites at home and for hosting torrents, so I've written a separate article explaining how to give your computer a static local IP address.
Step Four: Forwarding Port 80
If you don't have a router (but remember: if you have a modern broadband connection, your "cable modem" or "gateway" IS a router), then you can skip this step and move on to the next. If you have WiFi, or more than one computer, you definitely have a router and must not skip this step.
Now that you have chosen a static local IP for your computer, you're ready to configure the router to forward web traffic to your computer.
Again, this step is needed both for web hosting at home and for BitTorrent hosting. So, once again, there is a separate article explaining how to forward ports from the Internet to your computer via your router. Just follow the steps in that article to forward port 80.
Step Five: Allowing Web Traffic Through The Firewall
More firewall issues? Didn't we already do this? Only in part. Yes, your router serves as a firewall, but your computer also has a built-in firewall. You'll need to configure that firewall to allow traffic through on port 80 to reach your web server software. This step is also common to both web hosting and torrent hosting... so check out my article explaining how to allow traffic on specific ports through your computer's firewall.
Step Six: Get Apache Or Internet Information Server
Microsoft's IIS is nearly as popular. Windows users can also install Microsoft Internet Information Server (IIS).
I'll cover Apache first.
Apache Quick-Start Guide
Although Apache was born in the Unix/Linux world, it runs great on Windows too. In general, the newer your Windows, the easier it is to install Apache. Check out the Microsoft Windows Apache documentation.
You can obtain Apache for Windows, along with useful related tools like PHP and MariaDB (MySQL-compatible), via XAMPP, a free distribution of these popular open source tools. Just follow the XAMPP documentation to complete the installation.
Internet Information ServerIf you would prefer to use IIS, check out this tutorial.
Test Your Website From Your Own Computer
Is your website working? Let's find out! The first test is to access your site from your own computer. On the same computer that is running the web server software, access the URL http://localhost/. You should see an example home page provided with your Apache or IIS web server software. If not, review the appropriate quick start guide above and figure out which step you skipped! If you received errors during installation, you need to resolve them before your website will work.
Step Eight: Make Your Own Home Page
You have a web server, but right now the "content" on the site is just the default home page that came with the server software. Time to fix that!
All you have to do is move your own web pages to the appropriate folder. For Apache via XAMPP it would be:
For IIS it would be:
First, remove the files that are already in those folders. It's not smart to leave "default" files lying around. What if a security problem was found with one of these common files? Then your website would be vulnerable.
Next, copy your own web pages and images into the folder. The "home page" of your site should be called index.html (not index.htm). Both Apache and IIS are smart enough to know that when a user visits http://yourname.is-a-geek.com/, they should act as if the user asked for http://yourname.is-a-geek.com/index.html and do the right thing.
For more information about making web pages and graphics, see how do I set up a website?
Step Nine: Test Your Website From The Outside World
We did a lot of work here to give our computer a hostname on the Internet and forward web traffic through the router and firewall. Did we do it right? Only one way to be sure! Access your website from a computer that is not on your home Internet connection, or have a friend try it.
"I followed all the steps and I get my router's login page instead of my home page!"You are probably trying to access your website by name from behind your router (from one of your own PCs). With many routers, this does not work because the router automatically assumes any web connection to itself from inside your network is an attempt to log into the router's configuration interface. Test from outside your own network or have a friend do that for you. If you can access your home-hosted website from someone else's computer, you don't have a problem. If you want to access your site from a computer behind your router, you'll have to access it at its static local IP address instead of by name.
Another possible cause of this problem: you may have turned on your router's "remote router access" feature by mistake. People turn this on by accident because they think it has something to do with hosting a website at home. It doesn't. Turn it off, it is dangerous! You don't want other people accessing your router and changing configuration settings.
Got a LiveJournal account? Keep up with the latest articles in this FAQ by adding our syndicated feed to your friends list!