Skip to content

Instantly share code, notes, and snippets.

@plembo
Last active April 29, 2024 14:36
Show Gist options
  • Star 85 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save plembo/84f80c920bb5ac6f19e53fe6f8db1ff7 to your computer and use it in GitHub Desktop.
Save plembo/84f80c920bb5ac6f19e53fe6f8db1ff7 to your computer and use it in GitHub Desktop.
GitHub Pages with Namecheap custom domain

Using GitHub Pages with a custom domain: Namecheap Edition

As often happens, I found the official documentation and forum answers to be "close, but no cigar", and so had to experiment a little to get things working.

The main problem for me was a lack of concrete configuration examples. That's not entirely GitHub's fault: having migrated from Google Domains to Namecheap in the middle of this project, I was once again reminded of how many different ways there are to do things in the name service universe [1].

Although you'd think the simplest setup would be to merely configure for the subdomain case (https://www.example.com), in my experience using the apex domain (https://example.com) instead resulted in fewer complications.

Procedure

So here's my recipe for using a custom domain with GitHub pages where Namecheap is the DNS provider:

  1. Create A records for apex domain in Namecheap Advanced DNS panel for the domain(in this example, the fictional "example.com"):
Record Type Host Address TTL
A Record @ 185.199.108.153 30 minutes
A Record @ 185.199.109.153 30 minutes
A Record @ 185.199.110.153 30 minutes
A Record @ 185.199.111.153 30 minutes
CNAME Record www youracctname.github.io 30 minutes
  1. Wait an hour, then test if DNS is set up properly:
me@myhost:~$ dig +noall +answer +nocmd example.com
example.com.		1800	IN	A	185.199.110.153
example.com.		1800	IN	A	185.199.109.153
example.com.		1800	IN	A	185.199.108.153
example.com.		1800	IN	A	185.199.111.153
me@myhost:~$ dig +noall +answer +nocmd www.example.com
www.example.com.	1800	IN	CNAME	youracctname.github.io.
youracctname.github.io.	3600	IN	A	185.199.108.153
youracctname.github.io.	3600	IN	A	185.199.111.153
youracctname.github.io.	3600	IN	A	185.199.110.153
youracctname.github.io.	3600	IN	A	185.199.109.153
  1. In the GitHub repo config for Pages (Settings... Pages), enter your apex domain, "example.com" (not "www.example.com") in the "Custom Domain" box.

  2. Wait for GitHub to generate ahd install the SSL certificate for that apex domain (at least an hour).

  3. Test by going to "https://example.com" and "https://www.example.com".

I highly recommend not changing domain registrars and DNS providers in the middle of all that.

Notes

[1] The other problem is how damned long it takes for things to propagate across global DNS, especially when starting with TTLs of an hour (the trick is to try reducing your TTL before making any other changes, going from an hour to fifteen minutes can make a huge difference in blood pressure readings). Even with shorter TTLs, you need to anticipate upwards of an hour delay between changes. So chill. Read a book. Talk to the dog.

Further Reading

"Configuring a custom domain for your GitHub Pages site". GitHub Docs, https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site, Retrieved 9 September 2021.

"How do I link my domain to GitHub Pages". Namecheap Knowledgebase, https://www.namecheap.com/support/knowledgebase/article.aspx/9645/2208/how-do-i-link-my-domain-to-github-pages/, Retrieved 10 September 2021.

@sharpfoxdev
Copy link

Thanks for the tutorial, helped me to get the website running within couple of minutes without any hiccups!

@SolodkyRoman
Copy link

Thanks!

@hwedi
Copy link

hwedi commented Dec 26, 2022

any idea how to configure a subdomain? really appreciated

@leonardomarcao
Copy link

Thank you so much!

@realcapobambino
Copy link

Thanks. This helped me alot. 👌🏿

@pantasio
Copy link

Verify domain, Create TXT record with:
Host: "_github-pages-challenge-ORGANIZATION" or "_github-pages-challenge-YOURUSERNAME"
Value: "PRESS-COPY-BUTTON"

Read more detail:
https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages

@StonerWitches
Copy link

Hey, thanks! This was super helpful. The GitHub documentation could benefit from your input.

@ThisIsMirk
Copy link

Huge thanks for this very clear step by step instruction.

Copy link

ghost commented Jul 28, 2023

Thank you, this worked for my organisation's domain name too! 🚀🚀✅

@Declan-Reid
Copy link

I only realised from this that I have to use *.github.io instead of the domain that my pages use. Thank you!

@alpinus4
Copy link

Thanks! :)

@bunny-party
Copy link

I only realised from this that I have to use *.github.io instead of the domain that my pages use. Thank you!

can i ask what you mean by this? will this work instead? im having a lot of problems doing this process as a full beginner with my very first custom domain.

@JohnCuadrado
Copy link

JohnCuadrado commented Sep 16, 2023

Setting up custom domains with GitHub Pages can be tricky. Your experience highlights the need for clearer documentation. Using the apex domain often simplifies things. Feel free to ask for help. In a world where assignment help websites are constantly evolving, the Rafal Reyzer 2023 guide is like a lighthouse for students, you will find the best assignment help websites and Not only does this in-depth article shine a light on the ever-evolving world of academic support, but it also makes it easier for students to choose reliable resources. Rafal Reyzer’s cutting-edge recommendations equip you with the knowledge you need for academic success. Explore the wealth of insights that Rafal Reyzer has to offer and improve your academic life in 2023.

@RatriaSeza
Copy link

Can I rename the dns on namecheap ?

@plembo
Copy link
Author

plembo commented Feb 9, 2024

Not sure what you're asking.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment