Mode: DNS Only (Grey Cloud) Custom Domain: medullalabs.io Hosting: GitHub Pages Certificate: GitHub Pages (Let’s Encrypt)
In your Cloudflare dashboard (DNS section), configure these records:
Add four A records pointing to GitHub Pages IP addresses:
Type: A
Name: @
IPv4 address: 185.199.108.153
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Type: A
Name: @
IPv4 address: 185.199.109.153
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Type: A
Name: @
IPv4 address: 185.199.110.153
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Type: A
Name: @
IPv4 address: 185.199.111.153
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Why four IPs? GitHub Pages uses multiple IPs for redundancy and load balancing.
Type: CNAME
Name: www
Target: medullalabs.github.io
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Status: ✅ This is already correctly configured based on our earlier check.
Add these for IPv6 support:
Type: AAAA
Name: @
IPv6 address: 2606:50c0:8000::153
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Type: AAAA
Name: @
IPv6 address: 2606:50c0:8001::153
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Type: AAAA
Name: @
IPv6 address: 2606:50c0:8002::153
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Type: AAAA
Name: @
IPv6 address: 2606:50c0:8003::153
Proxy status: DNS only (grey cloud ☁️)
TTL: Auto
Since you’re using DNS only mode, Cloudflare is not proxying traffic. These settings don’t affect your site, but here’s the recommended configuration:
Path: SSL/TLS tab in Cloudflare dashboard
Encryption mode: Full (strict)
Note: This doesn’t actually apply in DNS-only mode, but it’s good to have configured if you ever switch to proxied mode.
Other SSL settings:
Path: DNS → Settings
DNSSEC: Enabled (recommended for security)
You can create a page rule to redirect www to non-www (or vice versa):
Option 1: Redirect www to apex
URL: www.medullalabs.io/*
Setting: Forwarding URL
Status Code: 301 - Permanent Redirect
Destination URL: https://medullalabs.io/$1
Option 2: Redirect apex to www
URL: medullalabs.io/*
Setting: Forwarding URL
Status Code: 301 - Permanent Redirect
Destination URL: https://www.medullalabs.io/$1
Recommendation: Redirect www to apex (medullalabs.io) since that’s what’s in your CNAME file.
When viewing your DNS records in Cloudflare, each record should show:
Type Name Content Proxy status TTL
─────────────────────────────────────────────────────────────
A @ 185.199.108.153 ☁️ DNS only Auto
A @ 185.199.109.153 ☁️ DNS only Auto
A @ 185.199.110.153 ☁️ DNS only Auto
A @ 185.199.111.153 ☁️ DNS only Auto
CNAME www medullalabs.github.io ☁️ DNS only Auto
Important: The cloud icon should be GREY (☁️), not orange (🟠).
User Browser
↓
Cloudflare DNS (resolves to GitHub IPs)
↓
GitHub Pages Servers (185.199.108-111.153)
↓
Your Website (medullalabs.io)
✅ DNS resolution through Cloudflare (fast, reliable) ✅ DNSSEC support (if enabled) ✅ GitHub Pages SSL (Let’s Encrypt certificate) ✅ GitHub Pages CDN (GitHub’s edge network)
❌ Cloudflare CDN/caching ❌ Cloudflare DDoS protection ❌ Cloudflare SSL certificate (using GitHub’s instead) ❌ Cloudflare security features (WAF, bot protection)
Why choose DNS only?
After DNS is configured, ensure GitHub recognizes your domain:
medullalabs.ioWait for certificate: GitHub will automatically provision a Let’s Encrypt certificate (10-60 minutes after DNS propagates).
# Check A records
dig medullalabs.io +short
# Should return GitHub Pages IPs:
# 185.199.108.153
# 185.199.109.153
# 185.199.110.153
# 185.199.111.153
# Check CNAME for www
dig www.medullalabs.io +short
# Should return:
# medullalabs.github.io
# 185.199.108.153
# 185.199.109.153
# 185.199.110.153
# 185.199.111.153
Wait 10-60 minutes after DNS propagates, then:
# Check certificate
curl -vI https://medullalabs.io 2>&1 | grep -A 5 "Server certificate"
# Should show:
# - Issuer: Let's Encrypt
# - Subject: medullalabs.io
# - Valid from/to dates
# Test apex domain
curl -I https://medullalabs.io
# Should return: HTTP/2 200
# Test www subdomain
curl -I https://www.medullalabs.io
# Should return: HTTP/2 200 or 301 redirect
Check:
Fix:
# Flush DNS cache (macOS)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Flush DNS cache (Windows)
ipconfig /flushdns
# Flush DNS cache (Linux)
sudo systemd-resolve --flush-caches
Symptoms: “Your connection is not private” error
Common causes:
Fix:
dig medullalabs.io CAA +short
If CAA records exist and don’t include Let’s Encrypt, remove them
Symptom: Site loads but browser shows “Not Secure”
Cause: Loading HTTP resources on HTTPS page
Fix: Ensure all assets use HTTPS or protocol-relative URLs in your HTML/CSS
Symptom: Browser shows “Too many redirects”
Cause: Conflicting redirect rules
Fix:
Based on our checks:
✅ A records: Pointing to GitHub Pages IPs ✅ www CNAME: Correctly pointing to medullalabs.github.io ✅ CNAME file: Added to repository ✅ Repository: Committed and pushed
⏳ Waiting for: GitHub to provision SSL certificate (10-60 minutes)
Consider switching to proxied mode if you need:
To switch: Just click the cloud icon next to each DNS record to turn it orange.
Note: If you switch to proxied mode, change SSL/TLS encryption to “Full (strict)”.
GitHub Pages:
Cloudflare:
Let’s Encrypt: