How to associate Heroku app with a Google domain? - heroku

I purchased a domain with Google and I would like to associate it with a Heroku app. What is the step-by-step process to achieve that?

I recently connected my app to a custom domain. Although my domain is purchased from AWS route53. I think the approach generally is the same.
First of all, you can check out this page written by Heroku. https://devcenter.heroku.com/articles/custom-domains
I believe the tutorial given by Heroku works. However, I am tired of all those CLI that make things unvisable XD. Luckily, we can configure it from the Heroku website instead of the CLI.
Here is my approach:
First open your app in the Heroku web page, then click the "Settings" button
https://dashboard.heroku.com/apps/{your app name}
Scroll down until you see the "Domains" section, Then click "Add domain"
https://dashboard.heroku.com/apps/{your app name}/settings
Input the domain name you purchased from google (eg. www.example.com)
After adding your domain, Heroku will give you the DNS target.
From your google domain DNS management page, you should be able to add a new record for your hosted zone.
Finally, add a new record with simple routing policy, type CNAME, and value equals to the DNS target provided by Heroku.
It is really simple if you follow these steps correctly. Due to my reputation level, I cannot upload photos. Feel free to contact me if you want some image to guide you how to locate the buttons :)

It’s only 3 steps:
1. Heroku, in your app > Settings > Add your domain:
Add www.[foo.com] (Note: www is KEY!) to your app
Copy the [DNS Target] it gives you
2.Google Domains > DNS > Resource records > Custom Records > Manage Custom Records:
www, CNAME, [DNS Target]
Now you’re basically set up. If someone goes to https://www.[foo.com] in a few minutes, they’ll see your Heroku app hosted at [DNS Target]. But if they go to any other permutation (http, non-www) they’ll get a 404 error. To solve this, we’ll set up permanent redirects to the main version in the next step.
Google Domains > Website > Add a Forwarding Address:
From Field: [foo.com]
To Field: https://www.[foo.com]
Permanent Redirect (301)
Forward Path (so that [foo.com]/about forwards to https://www.[foo.com]/about)
SSL Enabled
Boom. Wait a couple of minutes for DNS to catch up, and you’re done.
heroku certs:auto:refresh
In Terminal refresh the SSL cert settings on Heroku, and check the Heroku Dashboard to confirm everything’s working.
Confirm all the below permutations forward to your site correctly:
https:
https://www.[foo.com]
https://[foo.com]
http:
http://www.[foo.com]
http://[foo.com]
paths:
https://www.[foo.com]/about
http://[foo.com]/about
PS: So does this work for the naked domain like [foo.com] instead of www.[foo.com]? No! Google Domains does not support ALIAS domains, and therefore in combination with Heroku does not support forwarding to the naked (aka. root aka. apex) domain. Sorry! This surprised me too :( Source 1: Heroku Docs | Source 2: StackOverflow. Your only alternative here is to transfer your domain (which costs money) to something like Cloudflare.
A working answer with these explanations is taken from https://nikodunk.com/heroku-ssl-google-domains-2019/

Just to add to Fergus's answer, if you are seeing the warning "cant add cname records as root domain" add www to the host name input.

Related

How do I point my Squarespace domain to my Heroku app?

I had a Squarespace website and domain, but I rebuilt it from scratch with heroku. Now I just need to transfer the domain I bought on Squarespace to my heroku app.
I guess in order to transfer your domain name away from Squarespace, you are supposed to go through some steps in the Admin dashboard, and at the end of it, they send you a code to use when you go to transfer it to a new hosting provider.
I followed these steps, and have the code, but I can't seem to find anywhere on the heroku site where I can enter it.
Does anyone know how to go about this?
To point your domain to your Heroku app you can follow these steps:
Go to your Heroku app settings and scroll down to "Add domain" and click that button
Enter your domain (www.example.com)
Heroku will create a DNS target for you (you will copy this into your squarespace DNS settings)
Login to your squarespace account and access your dns settings (under "Advanced Settings")
Add your Heroku DNS target there and save
e.g. www CNAME heroku-dns-target

Custom google-domain for heroku app causes IP/DNS address error

I have a heroku app hosted at https://rosalinep.herokuapp.com/ that I'm trying to move to the address www.rosalinep.com. (I'm not picky about redirections from rosalinep.com or https vs http, I just want to have this website launched without 'herokuapp' in the url right now.) I used Google Domains to get the domain rosalinep.com, and used the following configurations:
On Google Domains:
synthetic records image
custom resource records image
On Heroku:
domains image
Last night when I first tried to launch this, it worked, but this morning I'm seeing the following error page (which is a total bummer...):
broken website image
Running 'heroku domains' confirms www.rosalinep.com is in the app's custom domains.
I did some searching to try and fix this problem, and it looks like some people in similar situations have reported success in using CNAME like I used, but Heroku's documentation seems to say that an ALIAS or ANAME is necessary for root domain configuration, and those options are apparently not supported by Google Domains.
Because of how Heroku works, they do not release the IP addresses of the apps you create on it, so I can't directly feed it an IP address.
I've gotten pretty stuck and confused in trying to resolve this. Any info on whether I can get this working with Google Domains would be greatly appreciated. Also, if it can be helped, I'd like to not pay for any additional services.
If Google Domains is a non-starter for this though, well, I'm open to other Domain registration websites.
Fixed it! :) After all that, it was just four characters that caused all this headache...
The issue was that in the Google Domains custom resource records section, in the Data field I had 'www.(dns_data_here).com.' when it should have '(dns_data_here).com.'
The site is now up and running on the new url!

Deployed heroku app not showing up on custom domain

I set up a custom domain for my heroku app, which worked ("Theres nothing here, yet").
I then deployed my first version of the app to heroku and tried to access it via the custom domain, but still got the message "Theres nothing here, yet".
The deployment was successful and the app can be reached via appname.herokuapp.com.
How do I get it to show up on my custom domain?
I had the same issue this morning but managed to resolve it.
I added my custom domain via the settings menu of the heroku dashboard (web page) and then added the heroku DNS target to a CNAME record with my DNS provider (GoDaddy). After just a few minutes the DNS target URL was pointing to the purple "There's nothing here, yet" page. 10 or 15 minutes later my custom domain name was also pointing there, but no sign of my app.
Researching the issue led me to your post and also to https://support.dnsimple.com/articles/heroku-error-nosuchapp/
Following the instructions at the bottom of the page I used the heroku command line to add a 'www' version of my custom domain.
heroku domains:add www.example.com
Immediately after this my app showed up at my custom domain. I didn't even need to add the 2nd DNS target to my DNS provider. It just worked.
Curiously, pointing my browser directly at the DNS target URLs does not work.

How to configure DNS records for Name.com and a Heroku app

I'm a bit confused about how to set up the DNS records for my domain at Name.com so it can correctly point to my Heroku app.
I found DNS configuration documentation at heroku's site but I'm still confused.
I'm under the impression that I need to set up a CNAME record for all subdomains and an A record for my root domain.
Also, on the name.com website, when I try to add a CNAME there are three blank fields I need to fill out which kind of confuse me: "Host" (where I enter '*' so it applies to all subdomains?), "Answer" (where I enter the DNS Target?), and "TTL"
Any help would be greatly appreciated. Thank you.
Fully detailed steps (2)
1). Visit Heroku apps dashboard
Choose your app
Click "Settings"
Find text "Add Domain", click button
Add your site with www subdomain:
www.yoursitename.com
Copy the returned "DNS target" value
2). Visit your name.com account
Find link text "Manage DNS Records" and visit link
"ADD RECORD" row with the following content:
Type:
Host:
Answer:
CNAME
www
📋 DNS target value from clipboard
(SAUMITRA KUMAR's answer, is what helped me write this answer.)
Don't use an A-record for your root domain. Heroku is using volatile IP addresses, which means the IP you configure in your A record can stop working at any moment without notice.
See https://devcenter.heroku.com/articles/apex-domains
On your root domain, you need to either setup an HTTP redirect to your www subdomain with your DNS provider, or use another provider which offers CNAME records for root domains.
As for the CNAME in your subdomains, yes, "Host" would be "*" to be all your subdomains.
Answer will be the endpoint provided by heroku, in the form appname.herokudns.com..
TTL means how often the DNS cache should be refreshed with the clients. Using the default (or 3600 if they don't provide any) will work here.
Here's what worked for me. Start with typing this in the Heroku CLI
Heroku domains: add www.youwebsitename.com --app yourherokuapp
This should give you a DNS target.You can obtain this from the your app settings as well on the website . Copy it and save it because we are going to need it later.Then after this run
heroku domains:wait for www.youwebsitename.com --app yourherokuapp
Then visit name.com and under your domains visit your dns records . There add CNAME entry with HOST equal to "www.yourwebsite.com" and ANSWER equal to whatever the dns target that heroku supplied you with .
Go ahead and visit your website , it'll work , if it doesn't make sure that you've used www with your website name . To fix this issue add an ANAME entry with "yourwebsite.com" as HOST and heroku dns again as target . It should reflect the changes within few hours .

Media Temple and Heroku CNAME

I am using Media Temple to configure my DNS settings for a domain. I recently launched an application on Heroku and want to set a subdomain of my domain to be the CNAME for the Heroku application. The issue is the DNS editor places a period at the end of the Heroku domain name when I enter it as a CNAME, and Heroku shows an error that this is not a valid domain.
In my DNS settings, I have:
subdomain.domain.com CNAME appname.herokuapp.com
When I save this, it shows up in the settings as
subdomain.domain.com CNAME appname.herokuapp.com.
Any ideas on how to remove that trailing dot?
I ran into this problem the other day when setting up CloudFlare for my Heroku app. "I do not think it means what you think it means."
With Heroku, you have to add domains that your app will be accessible from, even if your managing DNS elsewhere. Here's there documentation for how to do it. Basically, you can do this from the terminal:
cd into your app's directory
heroku domains:add subdomain.domain.com to add the subdomain like you want.
Also, on mediatemple, I think you might need to put just the subdomain part instead of subdomain.domain.com, though it'll probably work either way. As shown on the knowledgebase article from launchrock on adding a CNAME with Media Temple:
"5. In the Name field, enter the part of the address you chose to use for your website with
LaunchRock. For example, if you chose signup.yoursite.com, enter signup in the Name field."

Resources