This post was originally published on 13 July, 2006. This version has been updated.
I have a problem with facebook, myspace, and other social networking websites out there. The problem is when I upload my data to their webservers….I don’t own it anymore. They do. And they can do whatever they want with it once it is there.
With this in mind, I’d rather setup my own twitter using Status.net or my own digg using Pligg. But I’d do it on MY OWN SERVER. That way, any content I upload is MINE. It doesn’t reside on some server in California or DC and get recycled to advertisements.
I like to control my own stuff. I don’t like to be cut out of the loop. If you’re like me, then you’ll want to host your own domain, website and webserver so that your friends/family/shrink can quickly and easily connect up to see new photos, find out the latest family developments, and understand why you wear tinfoil hats every Thursday after 4pm.
Normally, to host your own webpage you would need to spend around 7 bucks to purchase a domain. Next you would need a hosting plan that usually runs around 3-15 dollars per month to serve up your web pages.
What most don’t realize is that you can skip these steps all together…you don’t need to get dedicated hosting (this blog is hosted on dedicated hosting…but started out in my apartment!) to serve pages up to your friends and family. You absolutely do not need to get domain name services through a provider. You can even host your own webserver using a dialup connection (that’s right…I said dialup) although. I don’t recommend it (but I’ve done it using 56.6kbps).
Why would you want to do this? The answer might be to stay connected to friends and family…perhaps install a gallery so that your grandparents can see pics of your new dog/car/tinfoil hat. Sure, you could waste my time with MyWaste..er..space and facebook and be barraged daily by advertisers and solicitors and be inundated with the minutiae of what all your friends had to eat for the day …or you could roll your own web host, install a gallery or website, and provide media to your friends and family without costing yourself a dime. That’s right, NO COST (except time spent getting it running). Just remember, your website might not survive a digging or slashdotting if you run it yourself. Keep that in mind 🙂 So without more chatter, let’s get to the meat and potatoes of things:
Meat and Potatoes
If you have Cable or DSL at home (not a business account) you have something called a dynamic connection. Dynamic connection means that it can change every once in a while. DSL and cable ISP’s purchase blocks of IP Addresses in the dynamic range so that they can keep consumers separate from businesses. It’s also easier for them to manage dynamic pools of people than to have to remember static connections that don’t change for everyone.
Because of this problem…an ever changing connection for you at home…web servers and websites do not do very well. The reason for this is because when you visit a website on a dynamic connection one day, it might be different the next day. In order for visitors of a website to find you each and every single time, you need a “domain” or web name that points back to the address (IP Address) your internet service provider changes on a whim. You’ll also need an update service to update your website each time your ISP decides to change things on you.
Believe it or not, there are free services out there to do that for you. You just have to be willing to do a little extra work in the beginning to set things up. You can also do this without spending 20-40 bucks a month on DNS service.
I’ll divide this up into 2 sections. The first will deal with Linux hosting. The second, Windows hosting. This is only something that I’ve found easy to do and the price is just right (it’s free). The only thing that I recommend is a dedicated internet connection (cable, DSL) but even this is not necessary as dialup can be used. I recommend that you use the Linux way of doing things since it is more secure and doesn’t require a restart every time you patch it.
*note: I’m assuming that you aren’t behind a firewall/proxy of any kind and that your ISP doesn’t block port 80 traffic. If your ISP blocks port 80, see the appendix at the end of this article.
No matter what version of Linux you run, chances are that you’ll be able to install the apache webserver. This is good news as over half the websites of the world are run by apache. I’m not going to address the specifics of how to set up your apache…only how to get it a fixed address without buying a domain. So, you have your html or php pages located into your webservers public directory…good…whatever application you have is installed on your server. Now, how to resolve your IP…lets say it is…188.8.131.52 (for our example) and you want it to have a host.name.com to bind to. Easy to resolve. Go to http://www.no-ip.com/index.php and sign up. You can get a site from noip that is like yourname.theirdomain.com/.net/.info. They have cool names like sytes.net and servebeer.org…even workisboring.com. Other services like dyndns.org also exist and provide the free service as well.
You’ll be able to choose your own top level name…for instance, Ithink.dnsiskinky.com could be your new domain name. Next download a client from the download tab: https://www.no-ip.com/downloads.php
The linux client is a tar.gz source and is simple to install. Follow the instructions when installing. You may have to install compilation tools (devel packages like GCC) to install the client. You now are the proud owner of yoursite.theirsite.com and your IP will ALWAYS update (as long as noip.com is up) each time you log on/sign on/beam up or whatever it is you do.
How does this help you? Well, if you’re like me, you have a dynamic IP address. If you connect to the internet via cable, dialup, or dsl…you also have a dynamic IP address. Dynamic means that it will change from time to time without warning. So by binding yoursite.theirsite.com to your IP address…you don’t ever have to worry about what IP address you have anymore. Instead, you’ll always be able to connect using yoursite.theirsite.com. You can host a webserver using Apache and a virtual host in this style as well (look for another how-to on this subject later) so that everyone can visit a shiny website at yoursite.theirsite.com.
Now you can give your friends/family/dog walker/mailman the address to your new webserver…maybe it’s Ithink.dnsiskinky.com like we used in the example above. Now when they visit that address in their web browser, your application or web page displays for them. You also get bragging rights at being the most technical friend/relative/dog walker client/household that everyone knows. Now let’s cover Windows.
Interestingly enough, Abyss is also free! I ran it while my linux machine was being worked on (bad hard disk…it was a Quantum 200MB drive from 1913…had to upgrade) and it worked just great off of Windows XP. Download that puppy and install it. Make sure you read all of the documentation and familiarize yourself with how Abyss does business.
The next step…getting a hostname… is even easier than the linux method because you don’t have to manually install the noip client…they have a windows installer. Go to http://www.no-ip.com/index.php and sign up. Choose the domain name you would like (see above examples in Linux section). Next, download the noip client from the download tab: https://www.no-ip.com/downloads.php but this time choose the windows client. From there, you’ll be able to install this with a simple double click. Fill in all of your information (pretty self explanatory) and make sure that it will run with each time you sign on. You’re set! Your IP will now resolve to the yourchoice.theirhostname.com
You don’t have to spend a dime to keep a domain bound to your IP. This is perfect for the home user who just wants a gallery or homepage. It’s even good for someone who has a weblog or enthusiast site. It’s good for someone who wants to be able to find their files and music…setup Jinzora and stream all your music library to yourself anywhere you are! Setup Amahi and have access to all the goodness it brings.
Please remember, this wouldn’t be good for a business to have. You will probably violate your ISP’s terms and conditions for using their connection if you tried to run a business this way.
It’s always good form to put a link of the stuff you are using on your website to direct traffic back to your software provider. When I used noip, I included a noip link on my main page and also an abyss webserver icon as well. It’s just good form and some companies/software providers necessitate the use of their logo or a link on sites that use their software/code. Just be a nice person and give a link back to them. Good luck! Have fun!
Also, please note that having hosted my own webserver for quite some time (circa 2001) I’ve found Linux and Apache as a combination to be more secure, faster, and more stable than any webserver I’ve hosted on the Windows Platform. I included information on Windows mainly to introduce you to the concept of free and open source software. If you thought getting a webserver for free was great, think about getting a whole operating system! Give it a try, you don’t even have to install it (use a Live CD).
If your ISP blocks port 80 traffic, your webserver won’t work. Before deciding that your ISP is blocking however, make sure your firewall has the appropriate rules to allow incoming traffic. You can do a quick add to IPTABLES in the following manner:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -j DROP
If you’ve opened up the appropriate ports and things still don’t work, it will be safe to say that you’ve determined the ISP is blocking port 80. How you can get around this conundrum is to switch the listening port on the webserver to a different one and redirect traffic there.
- See how to do this for IIS Webservers
- See how to do this for Apache Webservers (normally in /etc/apache2/httpd.conf but your distro may vary.)
- See how to do this for Abyss Webservers
If you still have problems, drop me a line in the comments section. I may not be able to answer all questions but I can most likely get you to a person/place/thing that can. Have fun and thanks for reading!