I currently use GoDaddy for a Deluxe Shared Hosting instance, where I host multiple sites along with having domain emails (email@example.com)
What is great about using a Deluxe Hosting instance is that I can have as many site as I want, and I can have as many email addresses to all the domains I own. That’s because I use cPanel Email (not the Office 365 Suite or anything like that).
What sucks about GoDaddy’s Deluxe Hosting, is that it’s a shared instance, which means that any traffic to any of my sites will be eating up from my allocated resources, also that being a shared instance (not dedicated), any heavy traffic days on that server, will choke my sites as well…
Moving away from GoDaddy…
That’s when I decided to migrate my WordPress site off of GoDaddy into Amazon Web Services (AWS).
But I wanted to make sure that email will still work, as I don’t want to move email to aws and have to pay for it. I already have unlimited emails and addresses with GoDaddy.
Giving domain “ownership” to AWS
Due to WordPress’ problems I faced when trying to have the wp files on aws and my domain DNS on GoDaddy, is that it wasn’t detecting that I own the domain, it was showing it as the static IP address on WordPress.
Following are the steps I took to change my DNS to have Amazon manage my domain traffic, but keep GoDaddy’s cPanel Email working.
Exporting the existing DNS zone of your site
- On GoDaddy, navigate to Domains > Click on the domain you’d like to move and “…” > DNS Zone.
Scroll down and you’ll find an export feature, pick UNIX.
- Export them into a file that you download onto your machine.
Importing the DNS zone into AWS
- On aws’ console (console.aws.com), head over to Route 53.
- Create a new zone, name it as your domain (e.g.: “example.com”)
- Do not create any records yet.
- Using TextEdit or Notepad, open the downloaded txt file in you got from GoDaddy for your DNS records, and copy everything there except the NS records, or anything else that already exists from the new zone in Route 53.
- Click on the Import button in Route 53 in that new zone you created, and paste whatever you copied above into the import flow.
If that import button is greyed out, that is because you added some records to the zone other than the default ones aws creates for you. Delete anything you might have already added manually, then that button should be enabled.
Modifying the imported DNS records
- Now update the “A” records for your domain “example.com” to point to your static IP for your AWS instance.
- Add or update the CNAME for “www” to go to “example.com”.
- Keep the MX and “mail” pointing at the GoDaddy instance, so that any cPanel emails remain functional. This is very important!
“Transferring” domain ownership to aws
Technically you’re not really transferring ownership, you are telling anyone that hits example.com to hit aws’ Route 53 first, then get re-routed to wherever you need to go. In order to do that, you need to:
At the bottom of that DNS zone on GoDaddy, click the “Change” nameserver button.
- That will take you to a page where you can specify your own or use the default from GoDaddy.
- Select your own and start entering them line by line.
What you want to enter is the NS record in Route 53 that has 4 lines, just take each one and enter it on 1 line.
- Hit save.
- You might notice that GoDaddy might take out the “.” at the end of the nameserver, but don’t worry as it doesn’t matter.
If for any reason you can’t save or you’re presented with a blank page, you will have to reach out to GoDaddy’s support in chat and ask them to do it for you. Shouldn’t take more than 5min to get it resolved with them 🤞
Now wait for like 10-30 min for the DNS propagation to occur ⏳. This process could take up to 24 hrs.
At this point if you had an SSL (https) on your site, that will start to fail and show that the site is insecure, as your certificate was only valid if the your GoDaddy shared hosting instance was the one resolving the DNS. But since we moved it, aws is the one resolving, so you will need to re-issue the SSL. I have another blog post that describes how to issue an SSL certificate on an aws lightsail instance.
🏁 Now try to go to your site on your browser by hitting “example.com” or “www.example.com”, you should see your site that is hosted on aws. And make sure to test incoming and outgoing cPanel emails!
I hope this tutorial was extensive and helped you out, please share it with others and subscribe for more content, I would really appreciate it! 🍻