← All tutorials
Custom domain DNS records connecting a portfolio to a web host
Intermediate≈ 15 min·4 steps

Connect a custom domain

Your exported site lives on whichever host you choose, so your domain points at that host rather than at PortfolioDIY. The pattern is the same almost everywhere: add the domain in your host, then add the DNS records your host gives you.

You'll need a deployed site (see the GitHub Pages tutorial) and access to your domain registrar's DNS settings.

1

Buy the domain

Any registrar works — the only requirement is access to the domain's DNS settings. Prefer a name you'll still want on a CV in ten years; yourname.com or yourname.dev ages better than a pun.

2

Tell your host about the domain

In your host's dashboard, find the custom domain setting: on GitHub Pages it's under the repository's Settings → Pages; on Netlify and Cloudflare Pages it's under Domain settings; on cPanel it's Addon Domains.

Enter your domain. The host will then show you exactly which DNS records it expects — usually a CNAME for the www subdomain and either A records or an ALIAS for the bare domain.

3

Add the DNS records at your registrar

In your registrar's DNS panel, create the records from the previous step. The names and values must match exactly — a trailing dot or a typo'd target is the most common failure.

DNS changes propagate in minutes usually, but can take up to an hour. If the host still reports "not configured" after that, re-check the record type: apex domains can't use CNAME records at most registrars, which is why hosts publish A/ALIAS alternatives.

4

Enable HTTPS

Once the domain resolves, switch on the host's HTTPS option — GitHub Pages calls it "Enforce HTTPS", Netlify and Cloudflare do it automatically. Certificates are issued for free within minutes.

Finally, set your canonical URL: in the editor's SEO settings, set the base URL to your new domain and re-export, so your sitemap and structured data reference the real address.

Tip: Redirect www to the bare domain (or the reverse) at the host level so you present one canonical address everywhere.

Start Building Free

Reference-style reading instead? See the documentation.