So, it's not terribly difficult to host a website from home. It doesn't seem to make sense to pay a 3rd party to host some low traffic websites, so in some cases hosting from your home computer makes sense .But maybe I'm not seeing the whole picture.
Here are some of the pitfalls I can think of:
- Dynamic IP address can bring the website down temporarily
- Power can go out for extended periods of time
- Internet provider can go down easier
- Limited bandwidth and bandwidth caps by ISP
- Potential contract issues with ISP not allowing website hosting
Are there others?
First and last are the big ones. Most ISPs disallow it per their terms of service, and some may even block inbound port 80/443 traffic. Remember too, many broadband connections are setup to allow much greater downstream traffic than upstream traffic (what was ADSL in the DSL days). So you may get 15MBit down, but only 4MBit up. If you're serving that means you've got a 4MBit choke point.
For purely personal, low-traffic sites, I really don't see it as an issue. In fact, I'd recommend it as a starting point for a purely hobby type site. If your site gets popular, then look at migrating to a hosted setup.
On the other hand, if its any sort of business site, run it on a hosted provider, presuming the business isn't in the business of hosting (or big enough to own its own data center).
Something no-one seems to have touched on yet: the psychological effect.
When I ran a server from home (which acted as my domain's mail server), I found I was constantly paranoid about it staying up. I was always pinging it to make sure that it wouldn't drop that potentially important e-mail. On the occasions that I couldn't access it, panic set in; has the house just been robbed? burnt down?
Of course, you may be far less prone to such thoughts than I ;)
If you're running services on your server that means you have to have ports open and services running. These services are exposed to attack and can potentially be an avenue to getting into your home network. I've been self-hosting for a few years, and except for
selinux
my web server would have been successfully hacked on at least one occasion.Other people have brought up a lot of other issues, which may or may not be issues in your particular instance. Basically, I see it like this: If you self-host as a hobby and if it's fun for you to do, self-hosting can be just fine. If it's for a business, then you probably want to do something other than self-hosting.
Don't forget the Slashdot Effect. You're only "low volume" until a link to one of your sites ends up on Slashdot / reddit / digg / other link aggregator / high traffic site.
Dynamic IP is your deal-breaker. If you want people to access your site via DNS (www.mysite.com) instead of a raw IP, you're going to have to change your public host file every time your ISP assigns you a new IP. The cached information for your site on all routers between you and previous visitors will likely take hours to update, even if YOU catch and change it immediately.
Basically, your visitors will see a lot of 404s every time you get a new IP. Getting a static IP from your ISP tips the ISP off to what you're going to be up to.
You can use Google's AppEngine for free hosting of your low traffic web pages. Static pages will work just fine (there's a guide), for dynamic you'll have to use Python.
Appengine's free quotas are just fine for your home page unless you're some sort of celebrity.
Typically at home you'll have ADSL, where A stands for Asymmetric. For example 24Mbit ADSL2+ has only 1Mbit of upload. Typical cable modems are asymmetric too, although difference is not as high (3-5 fold, not 20 fold). Some ISP to combat P2P farther reduce upload speeds, throttling eg. 20Mbit ADSL to 512kbit upload.
Otherwise not a real problem. As for security, even simple SOHO routers let you create DMZ and put your server there. I've been using home based server few years ago, old PC, downclocked and converted to fan-less.
But currently I don't see the point in doing that. It's just not worth the fuss. Nowadays you can get good quality free hosting (eg. Google Apps Engine) or wide choice of cheap, personal VPS-type hosting.