Migration Guide: WordPress to Jekyll on GitHub Pages
Migration Guide: WordPress to Jekyll on GitHub Pages
Domain: marko.andreis.blog Date Started: 2026-04-14 Deployment Method: GitHub Pages with Custom Domain
⚠️ Important: Correct Order of Steps
DO NOT add the custom domain in Phase 2! The correct order is:
- ✅ Phase 1: Configure project files (done)
- ✅ Phase 2: Enable GitHub Pages WITHOUT custom domain
- ✅ Phase 3: Configure DNS on Hostinger
- ⏳ Phase 4: Backup WordPress (can do while waiting for DNS)
- ⏳ Phase 5: Wait for DNS propagation, THEN add custom domain to GitHub
- ⏳ Phase 6: Final verification
- ⏳ Phase 7: Cleanup
Why this order? GitHub can’t verify your custom domain until DNS points to GitHub’s servers. Configure DNS first, wait for propagation, then add the domain.
Progress Overview
- Phase 1: Project Configuration (COMPLETED)
- Phase 2: Enable GitHub Pages
- Phase 3: Configure DNS on Hostinger
- Phase 4: Backup & Shut Down WordPress
- Phase 5: DNS Propagation & Testing
- Phase 6: Final Verification
- Phase 7: Optional Cleanup
Phase 1: Project Configuration ✅ COMPLETED
- Update
_config.ymlwith custom domain URL - Create/verify
CNAMEfile with domain name - Commit changes to git
- Push changes to GitHub repository
Status: Completed by Claude on 2026-04-14
Phase 2: Enable GitHub Pages (WITHOUT Custom Domain Yet) ✅ COMPLETED
IMPORTANT: Do NOT add the custom domain yet! You’ll add it in Phase 5 after DNS propagates.
Steps:
- Go to GitHub repository: https://github.com/ismandre/marko.andreis.blog
- Click Settings (top navigation bar)
- Click Pages in the left sidebar under “Code and automation”
- Under “Build and deployment” → “Source”:
- Branch: Select
master - Folder: Select
/ (root) - Click Save
- Branch: Select
- LEAVE “Custom domain” field EMPTY for now
- ⚠️ If you enter the domain now, you’ll get an error because DNS isn’t configured yet
- You’ll add it in Phase 5 after DNS propagates
- DO NOT check “Enforce HTTPS” yet (wait until Phase 5)
Notes:
- GitHub Pages will start building your site immediately
- Your site will be available at:
https://ismandre.github.io/marko.andreis.blog - Initial build takes 1-2 minutes
- After saving, wait 1-2 minutes, then test the temporary URL
Verify GitHub Pages is Working:
- Wait 1-2 minutes after clicking Save
- Visit: https://ismandre.github.io/marko.andreis.blog
- Confirm your Jekyll site loads (even if some links don’t work yet - that’s normal)
Completed on: _______
Temporary GitHub Pages URL working: [ ] Yes [ ] No
Phase 3: Configure DNS on Hostinger ✅ COMPLETED
Steps:
- Log into Hostinger: https://hpanel.hostinger.com/
- Navigate to Domains section
- Select domain:
marko.andreis.blog - Click DNS / Name Servers or Manage DNS
- Click Manage DNS records
Delete Existing Records:
- Delete any existing A records pointing to
@ormarko.andreis.blog - Delete any CNAME records for
@(if they exist) - Keep existing records for email (MX) and other services you use
Add GitHub Pages A Records:
- Add 4 new A records (one at a time):
| Type | Name/Host | Points to / Value | TTL |
|---|---|---|---|
| A | @ | 185.199.108.153 | 3600 |
| A | @ | 185.199.109.153 | 3600 |
| A | @ | 185.199.110.153 | 3600 |
| A | @ | 185.199.111.153 | 3600 |
Record 1:
- Type: A
- Name/Host: @ (or leave blank, or marko.andreis.blog)
- Points to: 185.199.108.153
- TTL: 3600
Record 2:
- Type: A
- Name/Host: @
- Points to: 185.199.109.153
- TTL: 3600
Record 3:
- Type: A
- Name/Host: @
- Points to: 185.199.110.153
- TTL: 3600
Record 4:
- Type: A
- Name/Host: @
- Points to: 185.199.111.153
- TTL: 3600
Add WWW Subdomain (Optional but Recommended):
- Add CNAME record for www subdomain:
| Type | Name/Host | Points to / Value | TTL |
|---|---|---|---|
| CNAME | www | ismandre.github.io | 3600 |
Record 5:
- Type: CNAME
- Name/Host: www
- Points to: ismandre.github.io
- TTL: 3600
- Click Save or Add Record after each entry
- Verify all 5 records are visible in the DNS management panel
Completed on: _______
Notes:
- DNS changes can take 1-72 hours to propagate (usually 1-4 hours)
- Write down the time you made these changes: _______
Phase 4: Backup & Shut Down WordPress
Backup WordPress Content:
- Log into WordPress admin: https://marko.andreis.blog/wp-admin
- Choose ONE backup method:
Option A: WordPress Export (Recommended for content only)
- Go to Tools → Export
- Select “All content”
- Click “Download Export File”
- Save the .xml file to your computer
Option B: Full Backup Plugin (Recommended for complete backup)
- Install UpdraftPlus plugin (or use Hostinger’s backup tool)
- Go to Settings → UpdraftPlus
- Click “Backup Now”
- Select “Include database” and “Include files”
- Download all backup files when complete
Option C: Manual File Backup
- Go to Hostinger Dashboard → Hosting
- Click File Manager
- Navigate to
public_html(or your WordPress installation folder) - Select all files → Right-click → Compress (creates a .zip)
- Download the .zip file to your computer
Download Media Files:
- In WordPress, go to Media → Library
- Use a plugin like “Export Media Library” or download files you want to keep manually
- Save important images/PDFs to your computer
Shut Down WordPress:
Note: You can do this now OR wait until DNS has fully propagated to GitHub Pages
- Go to Hostinger Dashboard → Hosting
- Click File Manager
- Navigate to
public_html - Verify you have backups before proceeding!
- Select all WordPress files and folders
- Right-click → Delete (or move to a backup folder)
Alternative: Leave WordPress files in place. Once DNS points to GitHub, they won’t be served anymore.
Backup saved to: _____
**WordPress shut down on:** _________
Phase 5: DNS Propagation, Add Custom Domain & Enable HTTPS
Step 5A: Check DNS Propagation
- Wait at least 1 hour after making DNS changes in Phase 3
- Visit: https://dnschecker.org/#A/marko.andreis.blog
- Look for GitHub Pages IPs (185.199.108.153, 109.153, 110.153, 111.153)
- Check multiple locations (at least 5-10 should show GitHub IPs)
- When most locations show GitHub IPs, propagation is mostly complete
DNS Status Checks:
| Time | Status | Notes |
|---|---|---|
| _____ | [ ] Pending | Started DNS changes |
| _____ | [ ] Partial | Some servers updated |
| _____ | [ ] Complete | Most servers updated |
Step 5B: Add Custom Domain to GitHub Pages
Only proceed once DNS shows GitHub IPs in Step 5A!
- Go to GitHub: https://github.com/ismandre/marko.andreis.blog/settings/pages
- Scroll to “Custom domain” section
- Enter:
marko.andreis.blog - Click Save
- Wait for DNS check to complete (may take 30 seconds)
- Verify you see: ✅ “DNS check successful” (green checkmark)
- If you see an error, wait longer for DNS propagation and try again
Custom domain added on: _______
Step 5C: Test Your Site
- Try visiting: http://marko.andreis.blog
- Does the Jekyll site load? (If yes, continue. If no, wait longer or troubleshoot)
- Try visiting: http://www.marko.andreis.blog (if you set up www)
First successful load at custom domain: _______
Step 5D: Enable HTTPS
Only proceed once custom domain DNS check is successful!
- Still on GitHub Pages settings page
- Check the box: “Enforce HTTPS”
- Wait 5-10 minutes for SSL certificate to provision
- Visit: https://marko.andreis.blog (with https://)
- Verify green padlock appears in browser
- Test that http:// redirects to https:// automatically
HTTPS enabled on: _______
Phase 6: Final Verification
Test All Functionality:
- Visit https://marko.andreis.blog (main site)
- Visit https://www.marko.andreis.blog (if configured)
- Check that site loads correctly on:
- Desktop browser (Chrome/Firefox/Safari)
- Mobile browser (iOS/Android)
- Private/Incognito mode
- Verify the following work:
- Homepage loads
- Blog posts are accessible
- Navigation menu works
- Images load correctly
- Links work (internal and external)
- Dark/light mode toggle (if applicable)
- Check HTTPS:
- Green padlock visible in address bar
- No mixed content warnings
- Certificate is valid
- Test SEO elements:
- Visit https://marko.andreis.blog/sitemap.xml
- Visit https://marko.andreis.blog/feed.xml
- Check page titles and meta descriptions
Performance Check (Optional):
- Test site speed: https://pagespeed.web.dev/
- Enter: https://marko.andreis.blog
- Review performance scores
All tests passed on: _______
Phase 7: Optional Cleanup & Cost Savings
Cancel Hostinger Hosting (Keep Domain!):
Important: Only do this AFTER everything works perfectly!
- Verify site has been working for at least 1-3 days
- Log into Hostinger billing
- Go to Billing → Subscriptions
- Find your hosting plan (NOT the domain!)
- Cancel auto-renewal or downgrade to “domain only” plan
- Keep domain registration active (required for DNS)
Current hosting cost: $ ___ /month
**Future cost (domain only):** $ ___ /year
Annual savings: $ _____
Update External Services:
- Update Google Search Console (if used):
- Add new property for https://marko.andreis.blog
- Submit new sitemap: https://marko.andreis.blog/sitemap.xml
- Update Google Analytics (if used):
- Update website URL in property settings
- Update social media profiles (if domain is listed):
- LinkedIn: _______
- Twitter/X: _______
- Other: _______
Cleanup completed on: _______
Future Site Updates
To update your Jekyll site in the future:
- Make changes locally in
/Users/andreism/me/no-style-please - Test locally (optional):
bundle exec jekyll serve - Commit:
git add . && git commit -m "Your message" - Push:
git push origin master - Wait 1-2 minutes for GitHub Pages to rebuild
- Visit https://marko.andreis.blog to see changes
Troubleshooting
“Domain does not resolve to GitHub Pages server” Error:
Error message: “Both marko.andreis.blog and its alternate name are improperly configured. Domain does not resolve to the GitHub Pages server.”
Cause: You’re trying to add the custom domain to GitHub Pages before DNS has been configured.
Solution:
- Leave the custom domain field empty in GitHub Pages settings for now
- Complete Phase 3 (Configure DNS on Hostinger) first
- Wait for DNS propagation (1-4 hours)
- Then add the custom domain in Phase 5B
Alternative: You can enter the domain anyway (ignore the error), configure DNS, and the error will resolve itself once DNS propagates.
Site Not Loading After DNS Change:
- Check DNS propagation: Use https://dnschecker.org
- Clear browser cache: Hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows)
- Wait longer: DNS can take up to 48 hours
- Verify GitHub Pages status: Check repository Settings → Pages
HTTPS Not Working:
- Wait longer: SSL certificate can take 10-30 minutes to provision
- Verify DNS: Make sure all 4 A records point to GitHub Pages IPs
- Check GitHub Pages: Should show “DNS check successful”
- Try again: Uncheck and re-check “Enforce HTTPS”
www Not Working:
- Check CNAME record: Should point to
ismandre.github.io - Verify DNS: Use https://dnschecker.org/#CNAME/www.marko.andreis.blog
- Wait for propagation: Can take several hours
Site Shows 404 Error:
- Check repository visibility: Must be public (or GitHub Pro for private)
- Verify branch: Settings → Pages → Source should be
masterbranch - Check CNAME file: Should contain
marko.andreis.blog - Rebuild site: Make a small change and push to trigger rebuild
Important Links
- GitHub Repository: https://github.com/ismandre/marko.andreis.blog
- GitHub Pages Settings: https://github.com/ismandre/marko.andreis.blog/settings/pages
- Hostinger Dashboard: https://hpanel.hostinger.com/
- DNS Checker: https://dnschecker.org/#A/marko.andreis.blog
- Site URL: https://marko.andreis.blog
Contact Information
- Hostinger Support: Available in hPanel dashboard
- GitHub Support: https://support.github.com/
- Jekyll Documentation: https://jekyllrb.com/docs/
Notes & Issues
Use this space to track any problems or observations:
Date: _______________
Issue: _______________
Resolution: _______________
Date: _______________
Issue: _______________
Resolution: _______________
Migration Status:
- In Progress
- Completed Successfully
- Completed with Issues (document above)
Final completion date: _______
Total migration time: _____ hours/days
This guide was created on 2026-04-14 for migrating marko.andreis.blog from WordPress/Hostinger to Jekyll/GitHub Pages.