When setting a blog on GitHub pages I found a bit hard for me to understand what should be set for DNS to run it on my custom domain.
There is quite good introductory for the process in documentation but still I was quite confused at the start. Unknown terms and fact that I’m not familiar with DNS. I mean I haven’t seen it from my college times.
I wanted the following setup
War of terminology
user pages - regards of DNS settings it’s the same thing as organization pages just for a user. A user (me) have only one user personal pages. You can create one when creating GitHub repository
<username>.github.io. In my case it’s https://github.com/ochaloup/ochaloup.github.io. Then any static web page content is available at
apex domain - is equal to a term
root domain- meaning domain without
blog. In my case the wording
For a GitHub repository being availble on GitHub Pages (meaning under
you need to set it up. Go by tab
Settings at your repository and scroll down to section GitHub Pages.
There you change None to a branch that should represent the content of the GitHub Pages.
When you want to use custom domain you need to define what will be at box Custom domain.
In my case I want to have the blog available under http://blog.chalda.cz then I set there
My user page should be available under http://chalda.cz then I set there
Now when you do so GitHub starts with automatic recirection to the custom domain.
In my case it means that going to http://ochaloup.github.io will
automatically redirect to https://chalda.cz.
When you define something into Custom domain box then GitHub automatically creates
a file named
CNAME with only one line consisting the specified Custom domain. Changing
or creating content of the
CNAME file has the same result as setting that in the box
First (probably obvious but…) observation was that changes in settings are propagated really in terms of hours, not sooner
After spending some time with help of GitHub documentation and some blog posts similar to this one I got the following settings started to work.
Documentation recommends using
I just took a
@ IN SOA ns1.ignum.com. hostmaster.ignum.cz. 2017020502 10800 3600 604800 3600 @ IN A 18.104.22.168 @ IN A 22.214.171.124 blog IN CNAME ochaloup.github.io. www IN CNAME ochaloup.github.io. @ IN NS ns1.ignum.com. @ IN NS ns2.ignum.com. @ IN TXT "v=spf1 include:_spf.ignum.cz ~all" _autodiscover._tcp IN SRV 0 0 443 nmrdiscover.ignum.cz.
For more information on
TXT record check some DNS documentation.
Here briefly what I understood -
SOA is compulsory, defines who is responsible
NS is required by my provider here and defines where name servers
for this domains are,
TXT serves information about the server (e.g. dns account info).
A records are needed for apex domain
chalda.cz redirection works.
It points to GitHub DNS servers diretly.
blog (for redirect to project page) uses
and points to my
CNAME record serves to get available my user page at domain
http://chalda.cz and http://www.chalda.cz. (TODO: here does not work or what?)
Tools to help
When I start to play with setup I found out two tools helpful.
dig chalda.cz. With a more consense output
dig chalda.cz +nostats +nocomments +nocmd
Chrome developer tools (Ctrl+Shift+I) - got to tab Network, enable checkbox Preserve log and go to e.g. http://ochaloup.github.io. You can see in headers that you were redirected to http://chalda.cz by
301 Moved Permanently. If you do some changes then info that the page was moved permanently is remembered in browser cache and browser then directly shows you the http://chalda.cz without consultation with DNS server (
301 Moved Permanently (from disk cache)). To workaround that clear the Chrome’s cache - go to
chrome://net-internals, click a small down pointing arrow in right corner and choose Tools → Clear cache from drop down menu.