For the past 10 years or so I’ve been hosting my site from home on a custom Windows, Apache, MySQL, PHP (WAMP) server.
As well as the usual firewall rules and port forwarding required to host a server from a domestic cable connection, it’s necessary to run Dynamic DNS so that your URL can ‘follow you’ whenever your ISP decides to change your IP address (which can happen once an hour or once a year depending on your ISP).
For several years I’d been happily using DynDNS. Their service was reliable, their software client was easy to use and lightweight and it was free. The only pain was their nagware requirement to log in once a month to keep the service alive.
Then they withdrew their free plan. Yes, starting at $25/year it’s pretty cheap, but it’s just a small link in the chain and I resented the idea of having to pay for it.
Next up was Duck DNS. The promise of Duck is great: a free service, developed by two independent software engineers, hosted on the Amazon EC2 cloud… perfect. Or at least it was in theory. The first problem is that Duck doesn’t have an update client, so it’s necessary to script updates. In my case, because I’m using Windows, that meant writing VBS scripts and creating new scheduled tasks – a bit of a pain.
Worse, the service wasn’t particularly reliable. I use Pingdom for server monitoring and during my time on Duck I quite often received outage notifications. Every time I checked the problem was with Duck – they’d have my Dynamic IP either not responding or pointing to a random IP address that was nothing like mine (not even in the same ISPs range).
So, with Duck abandoned, next up was NoIP. Finally, I might’ve found nirvana: a simple Windows update client, a fast, reliable service, and completely free
with no nagware (Update: *Groan*… the nagging has started, log in every 30 days, please upgrade, etc. Still good, but my hunt for a completely free and fast DDNS continues…) It’s early days, but so far I’ve had zero downtime with NoIP and their Windows update client has been rock solid. Highly recommended!
A note about DNS records
In the simplest configuration for hosting from home, you’d simply publish your DDNS name – e.g. http://grantgibson.noip.me.
The next level of complexity would be to point another domain name at your DDNS account. The easiest way to do that is with a CNAME record, e.g. www.example.com. CNAME grantgibson.noip.me, which would allow people to access your home machine at www.example.com.
I’ve taken my DNS complexity two steps further. I’m using Google’s PageSpeed Service to cache, compress and serve my pages. My main URL, www.grantgibson.co.uk, points to the Google caching servers. In turn, the Google caching servers are configured to access my ‘real’ server at pssredirect.grantgibson.co.uk, which is in turn redirected with a CNAME record to my Dynamic DNS entry, which in turn points to my current home IP.
It’s far more complex than anything I’d trust for a commercial client, but as a free way to host a large site it works well, and it works pretty fast.