Having converted by personal website from a simple PHP site to a Node.js-based blog (ie. Ghost), I unfortunately needed to change hosting providers. As awesome as VlexoFree has been the last couple years, it didn't support Node.js so I had to find an alternative.
One of the perks of being a Microsoft employee is free Azure credits! That made my decision pretty easy on where to move. For those not employed by MSFT, Azure is still a relatively cheap hosting option. As custom domain names cannot be used with the Azure "Free" website tier, you'll need to upgrade to one of these tiers: Shared, Basic, or Standard. The Shared tier is the cheapest option: $10/month. Full price list is here.
Now, how do we setup custom domains with Azure? The MSDN documentation is pretty good but it was missing my registrar: NameCheap. The problem with DNS entries is that it takes awhile to propogate so it's difficult to assess whether things are setup correctly.
Although these instructions are specific to NameCheap, they can still be applied towards other registrars:
If you already have a nameserver, that's great. In my case, I switched to Namecheap.
Be sure you have completely filled out your contact information: registrant, administrative and technical.
Namecheap's host records settings are a bit different from those of other registrars. With Namecheap, the records are for the subdomain :
Map custom domain to your Azure website instance:
host name: @ record type: A ip address/url: [IP ADDRESS]*
You can find the IP address of your Azure website instance on the "Manage Domain" dialog on the Azure portal (refer to the MSDN documentation for a step-by-step).
host name: www ip address/url: jasonpoon.azurewebsites.net record type: CNAME
In order to validate ownership of the domain, Azure requires the following domain record. Once validated, the entry can be removed:
subdomain: awverify ip address/url: awverify.jasonpoon.azurewebsites.net record type: CNAME
Add your custom domain on the Azure portal
Due to the nature of DNS, the time it takes for the updated records to propogate varies. For me, as I also made a nameserver change, it took about 48 hours for everything to resolve.